gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:13:02 26 4
gpt4 key购买 nike

我显然在 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);

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

请让我知道哪里出错了。

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

编辑:

吸取的教训, input.hasNext() 不会将指针移动到下一行,因此扫描器不会前进超过任何输入。正如这个问题的答案以及 here 中所解释的那样.

最佳答案

嗯,根据

while(input.hasNext()) {
if(input.hasNextInt()) {
sum += input.nextInt();
}
}

如果此 token 不是 int,您的扫描器将不会消耗下一个 token ,您可以使用类似的内容来突出显示此行为

int k=0;
while(input.hasNext()) {
if(input.hasNextInt()) {
sum += input.nextInt();
} else {
System.err.println("What ? It's not an integer...");
if ( k < 1 ) {
System.err.println("I'm gonna try again !");
k++;
} else {
System.err.println("'"+input.next()+"' it's definitively not an integer");
k=0;
}
}
}

最后,解决方案有很多,例如:

  • 修改您的输入文件并删除所有非整数标记
  • 使用 Scanner::next() 使用非整数 token
  • Sanjeev 的回答

关于java - Scanner.hasNext 上的无限循环,从文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23676834/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com