java scan while while循环不会停止

时间:2013-10-17 21:10:41

标签: java while-loop java.util.scanner

我是CS学生的第一年,我正在完成一项任务,但我遇到了这个不会停止的循环......

import java.io.*;
import java.util.Scanner;

class Ass1{
public static void main(String[] args){
    int i=0;

    try{
        File myfile = new File ("./ages.txt");
        Scanner scanner = new Scanner(myfile);

        while(scanner.hasNext()){
            i++;
        }
        System.out.println("ages.txt contains " + i + " lines");
        scanner.close();
    }catch(IOException e){}
}
}

并且ages.txt文件如下所示(它们都是在单独的行中,但不知怎的,我只能在这里显示它们:()

200 201 202 203 205 205 207 208 210 213 214 217 218 219 219 221 225 226 227 227 231 232 238 238 240 309 313 314

我正在尝试从文本文件中读取所有行,最后打印它包含的行数。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您需要致电scanner.next();

来推进扫描仪

如果你在计算行数,最好分别使用scanner.hasNextLine()scanner.nextLine()

您编写的方式,scanner.hastNext()将始终评估为true,因为扫描仪从未真正离开它的初始位置,因此始终会有hasNext()

答案 1 :(得分:0)

那是因为你没有在while循环中调用nextInt()方法,这意味着Scanner永远不会前进到下一个标记。