【发布时间】:2013-11-19 22:00:54
【问题描述】:
我正在使用 Scanner 读取大约 700 行文本(每行一个单词),并将每一行/单词存储为 String ArrayList 的一个元素,该元素由预定的 800 元素大小构成。然而,在 Eclipse 的变量模式下调试时,我注意到 ArrayList 的后面元素根本没有初始化 - 似乎 Scanner 停在一个单词的中间,在一个随机的行上。
- 这不是分隔符的问题(我已经初始化了带有和不带有“\n”分隔符的扫描仪,没有区别)或文本内容本身——当我切换单词的顺序时,扫描仪在完全相同的字符数处停止读取。
- 文本文件本身并不是很大——只有 6KB。
- 我试过从 next() 切换到 nextLine(),也没有问题
我正在尝试使用资源:
try (Scanner stopwordImport = new Scanner(new File(stopwordFile))) {
while (stopwordImport.hasNext()) {
stopWords.add(stopwordImport.nextLine());
}
...所以 Scanner 应该正在关闭。
我不知所措...怎么了?提前致谢。
【问题讨论】:
-
有什么例外吗?有空的 catch 块吗?
-
任何特殊字符?试试 bufferedreader,我遇到过像你这样的镜像问题。或者尝试将 hasNext() 切换到 hastNextLine() 以查看这是否会影响您声明的从 next() 到 nextLine() 的切换
-
您是否尝试打印
ArrayList? IDE 可能存在问题/配置错误。 -
异常:最初捕获 FileNotFoundExceptions 并打印堆栈跟踪,更改为通用类型 Exception 但没有区别...
-
这是什么意思
I've initialized Scanner both with and without a "\n" delimiter?。另外,像@John 所说的那样使用hasNextLine()。这是更好的做法。
标签: java java.util.scanner java-io