我的程序停留在从文件读取的while循环中

时间:2017-03-22 23:03:51

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

public static void main(String[] args) throws IOException{
        //System.out.print("ok");
        Scanner fileReader = new Scanner(new File("EmployeeInfo.txt"));
        //System.out.print(fileReader.nextInt());

        while(fileReader.hasNext()){
            System.out.print("ok");
            int year = 2014;
            //int year = fileReader.nextInt();
            if(year == 2014){

                System.out.print("ok");

            }//end if


        }// end while loop



    }//end main method

我不确定为什么它会卡在while循环中。我已经验证该程序打开文件并可以阅读。

2 个答案:

答案 0 :(得分:3)

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

以下是nextLine()方法documentation所说的内容:

  

使此扫描程序超过当前行并返回跳过的输入。此方法返回当前行的其余部分,不包括末尾的任何行分隔符。该位置设置为下一行的开头。

因此,您需要在nextLine()循环内调用while来遍历这些行并到达文件末尾,以便控制权从其中消失。

答案 1 :(得分:0)

使用扫描程序读取整数的问题是它将换行符留在缓冲区中,导致hasNext方法返回true。您可以使用readline()或调用next()来清除换行符。