
hasNext()第一次调用后,如果您不从文件中读取,
hasNext()将始终返回
true。因为输入的前面没有变化。
假设您有一个包含以下内容的文件:
这是输入
如果调用
hasNext()此文件,它将返回,true因为文件中存在下一个标记,在本例中为单词this。
如果您在此初始调用后未从文件中读取,则要处理的“下一个”输入仍为单词this。直到您从文件中读取后,下一个输入才会更改。
TL; DR
当您调用hasNext()从文件读取时,否则将始终有无限循环。
另外
如果您确实要使用hasNext(),或者想要使用,可以创建另一个Scanner对象并读取文件以计数行数,那么循环就可以正常工作。另外,你应该真正使用hasNextLine()
public int countLines(File inFile){ int count = 0; Scanner fileScanner = new Scanner(inFile); while(fileScanner.hasNextLine()) //if you are trying to count lines { //you should use hasNextLine() fileScanner.nextLine() //advance the inputstream count++; } return count;}希望这会有所帮助。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)