只读取扫描仪中的数字
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
循环查找仍在流中的任何标记,而不仅仅是 double
s。
while (input.hasNext())
然后,在 while
循环中,查看下一个标记是否是带有 hasNextDouble
的 double
。如果没有,您仍然需要通过调用 next()
.
来使用令牌
if (input.hasNextDouble())
{
double nextNumber = input.nextDouble();
sum += nextNumber;
}
else
{
input.next();
}
想象有一个 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
循环查找仍在流中的任何标记,而不仅仅是 double
s。
while (input.hasNext())
然后,在 while
循环中,查看下一个标记是否是带有 hasNextDouble
的 double
。如果没有,您仍然需要通过调用 next()
.
if (input.hasNextDouble())
{
double nextNumber = input.nextDouble();
sum += nextNumber;
}
else
{
input.next();
}