首页 > 解决方案 > .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();

标签: javaloops

解决方案


您忘记跳过非 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();

推荐阅读