相关疑难解决方法(0)

如何安全扫描整数输入?

Scanner scanner = new Scanner();
int number = 1;

do
{
    try
    {
        option = scanner.nextInt();
    }
    catch (InputMismatchException exception)
    {
        System.out.println("Integers only, please.");
    }
}
while (number != 0);
Run Code Online (Sandbox Code Playgroud)

尽管存在异常处理,但在给出非整数输入时,此代码将进入无限循环.它不是Scanner暂停在下一次迭代中收集输入,而是继续抛出InputMismatchExceptions直到程序被杀死.

扫描整数(或其他类型,我猜)输入,丢弃无效输入并正常继续循环的最佳方法是什么?

java exception input infinite-loop java.util.scanner

5
推荐指数
2
解决办法
2万
查看次数

Scanner.hasNext上的无限循环,从文件中读取

我显然正面临无限循环while(input.hasNext()),如下面的代码所示

File file = new File("data.txt");
Scanner input = new Scanner(file);

int sum = 0;

while (input.hasNext()) {
    if (input.hasNextInt()) {
        sum += input.nextInt();
    }
}
System.out.println(sum);
Run Code Online (Sandbox Code Playgroud)

一些相关的问题解释了为什么如果输入流是System.in,它总是返回true ,但是我正在扫描File.

请让我知道我哪里出错了.

我正在尝试计算唯一整数值​​的总和(空格分隔的位置).

编辑:

经验教训, input.hasNext()不会将指针移动到下一行,因此扫描仪不会超过任何输入.正如在这个问题的答案以及这里所解释的那样.

java infinite-loop java.util.scanner java-io

2
推荐指数
1
解决办法
1259
查看次数