Представьте, что Сканер передает любой ввод строки, такой как "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);
}
Для того, чтобы иметь возможность обойти без числового ввода, вы должны иметь свой while
внешний вид циклы для любых токенов еще на потоке, а не только double
с.
while (input.hasNext())
Затем, внутри, в while
цикл, увидеть, если следующая лексема является double
с hasNextDouble
. Если нет, вам все равно нужно использовать токен с вызовом next()
.
if (input.hasNextDouble())
{
double nextNumber = input.nextDouble();
sum += nextNumber;
}
else
{
input.next();
}