我试图帮助this用户提供答案,但在文件中阅读并不像我预期的那样工作。
如果我创建一个仅包含前两行OP的文件:
学习Java - William Lane -12.00 - Wiley - 0811234561
- William Stalling - 25.00 - Prentice Hall - 1304086641
输出符合预期:
Learning Java - William Lane -12.00 - Wiley - 0811234561
- William Stalling - 25.00 - Prentice Hall - 1304086641
但是当我添加第三行时:
学习Java - William Lane -12.00 - Wiley - 0811234561
- William Stalling - 25.00 - Prentice Hall - 1304086641
OOP编程 - Graham Winter - 32.50 - O' Reilly - 0471974555
输出为空白。
我的代码很简单,只是为了测试它。我直接从上面链接的问题复制并粘贴了文件内容。该行上是否有特殊字符,若然,如何找到它?为什么不打印其他线?
Scanner sc = new Scanner(new File("myfile"));
while (sc.hasNextLine()) {
String nameLine = sc.nextLine();
System.out.println(nameLine);
}
我通过调试器运行它,sc.hasNextLine
返回false
,程序结束。
修改
我基本上使用Notepad
对此进行了测试,并注意到(在浏览器上)32.50和O' Reilly之间的差距略微拉长。所以我删除了这个破折号并保存,程序按预期工作。当我把它重新放入并保存并重新运行程序时,它不会显示任何内容。我每次都可以制作这个。
然后我在Notepad++
进行了测试,一切顺利。快乐的日子。
所以我用WinMerge
对两个文件进行了比较;它基本上表示唯一的区别是短划线,而Notepad++
上的–
只有Notepad
,它–
。
任何想法?