Только для чтения номера со сканера

1

Представьте, что Сканер передает любой ввод строки, такой как "11 22 ab 22", и метод должен рассчитать общую сумму всех чисел (55 для примера упоминания). Я кое-что закодировал, но я не могу пропустить строки. Может ли кто-нибудь помочь мне в этом?

System.out.println("Please enter any words and/or numbers: ");
String kbdInput = kbd.nextLine();
Scanner input = new Scanner(kbdInput);
addNumbers(input);  

public static void addNumbers(Scanner input) {
    double sum = 0;
    while (input.hasNextDouble()) {
        double nextNumber = input.nextDouble();
        sum += nextNumber;
    }
    System.out.println("The total sum of the numbers from the file is " + sum);

}
  • 0
    Это очень похоже на stackoverflow.com/questions/2367381/… - это решение, вероятно, будет работать для вас
Теги:
while-loop
java.util.scanner

1 ответ

7
Лучший ответ

Для того, чтобы иметь возможность обойти без числового ввода, вы должны иметь свой while внешний вид циклы для любых токенов еще на потоке, а не только double с.

while (input.hasNext())

Затем, внутри, в while цикл, увидеть, если следующая лексема является double с hasNextDouble. Если нет, вам все равно нужно использовать токен с вызовом next().

if (input.hasNextDouble())
{
   double nextNumber = input.nextDouble();
   sum += nextNumber;
}
else
{
   input.next();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню