只读扫描仪中的数字

时间:2015-02-05 21:30:06

标签: java while-loop java.util.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);

}

1 个答案:

答案 0 :(得分:8)

为了能够绕过非数字输入,您需要让while循环查找仍在流上的任何令牌,而不仅仅是double s。

while (input.hasNext())

然后,在while循环内部,查看下一个标记是否为double hasNextDouble。如果没有,您仍需要通过调用next()来使用令牌。

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