只读取扫描仪中的数字

Read only numbers from scanner

想象有一个 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);

}

为了能够绕过非数字输入,您需要让 while 循环查找仍在流中的任何标记,而不仅仅是 doubles。

while (input.hasNext())

然后,在 while 循环中,查看下一个标记是否是带有 hasNextDoubledouble。如果没有,您仍然需要通过调用 next().

来使用令牌
if (input.hasNextDouble())
{
   double nextNumber = input.nextDouble();
   sum += nextNumber;
}
else
{
   input.next();
}