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循环中。我已经验证该程序打开文件并可以阅读。
答案 0 :(得分:3)
那是因为你没有在nextLine()
循环中调用nextXXX()
(或while
)方法,这意味着Scanner
永远不会前进到下一个标记。
以下是nextLine()
方法documentation所说的内容:
使此扫描程序超过当前行并返回跳过的输入。此方法返回当前行的其余部分,不包括末尾的任何行分隔符。该位置设置为下一行的开头。
因此,您需要在nextLine()
循环内调用while
来遍历这些行并到达文件末尾,以便控制权从其中消失。
答案 1 :(得分:0)
使用扫描程序读取整数的问题是它将换行符留在缓冲区中,导致hasNext方法返回true。您可以使用readline()或调用next()来清除换行符。