想象一下,Scanner会传递任何字符串输入,例如" 11 22 a b 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 :(得分:8)
为了能够绕过非数字输入,您需要让while
循环查找仍在流上的任何令牌,而不仅仅是double
s。
while (input.hasNext())
然后,在while
循环内部,查看下一个标记是否为double
hasNextDouble
。如果没有,您仍需要通过调用next()
来使用令牌。
if (input.hasNextDouble())
{
double nextNumber = input.nextDouble();
sum += nextNumber;
}
else
{
input.next();
}