0

我是 CS 一年级的学生,我正在做一项作业,但我遇到了这个不会停止的 while 循环......

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

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

预先感谢您的帮助。

4

2 回答 2

3

您需要通过调用来推进您的扫描仪scanner.next();

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

你写它的方式,scanner.hastNext()总是会评估为真,因为扫描仪实际上从未离开它的初始位置,所以总会有一个hasNext()

于 2013-10-17T21:13:02.600 回答
0

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

于 2017-03-22T23:36:12.143 回答