java - .hasNext() 上的无限循环
问题描述
我正在尝试读取文件并提取最大的数字。我想把文件读到最后,但 hasNext() 一直给我真相。当我尝试将其更改为 hasNextInt() 时,即使我的字符是整数,它也不会进入。我怎样才能摆脱循环并正确读取我的整数?帮助将不胜感激。
int maxScore=0;
int score = 0;
Scanner scan = new Scanner("PacManHighScore");
while(scan.hasNext()) {
if(scan.hasNextInt()) {
score = scan.nextInt();
}
System.out.println(score);
if(score > maxScore) {
maxScore = score;
}
}
scan.close();
解决方案
您忘记跳过非 int 值,因此您陷入了无限循环。
试试下面的代码。
int maxScore=0;
int score = 0;
Scanner scan = new Scanner("PacManHighScore");
while(scan.hasNext()) {
if(scan.hasNextInt()) {
score = scan.nextInt();
}else{
scan.next();
}
System.out.println(score);
if(score > maxScore) {
maxScore = score;
}
}
scan.close();
推荐阅读
- javascript - 在鼠标滚动时触发一次功能
- java - 代理和 UndeclaredThrowableException
- php - 我希望日期为法语格式
- jquery - 在 Angular 5 中使用 jquery 插件
- python - 如何将“args=(...)”添加到我自己函数的参数中?
- javascript - Node、Javascript 中的算法优化
- apache-zeppelin - Zeppelin - 如何授予用户权限
- batch-file - 使用 .bat 文件删除除两个文件夹之外的所有文件夹
- c# - C#中的图像缩小
- javascript - 按下按钮时选择的 div 标签的内容 - javascript