首页 > 解决方案 > 扫描仪在两个系统上的行为不同

问题描述

我编写了一个程序,它逐字读取文件,并计算每个单词出现的次数。我正在使用扫描仪执行此操作。当我尝试在不同的机器上运行我的代码时,问题就出现了。在我的 Windows 10 机器上,代码完美地运行在整个文件中,但是当代码在我的 MacBook 上运行时,扫描仪在中途停止读取文件。我已经包含了循环通过下面文件的代码部分。

Scanner s = new Scanner(theFile);
List<String> words = new LinkedList<>();

while (s.hasNextLine())
{
    String word s.next().replaceAll("\\p{Punct}", "");
    words.add(word.toLowerCase());
}

正如我所说,在 Windows 上,会读取整个文件,但在 Mac 上,只会读取很小的一部分。此外,我使用的是 SVN 存储库,并确保代码以及正在读取的文件是相同的。

标签: javajava.util.scanner

解决方案


我最终从使用扫描仪切换到使用 BufferedReader。我没有阅读每个单词,而是一次阅读一整行,然后将一行拆分为单个单词。仍然不确定为什么 Scanner 无法在两个平台上正常工作,但这种方法给了我所需的结果。


推荐阅读