我非常困惑为什么当BufferedReader对象尚未到达输入末尾时,我的程序停止(不终止)。我尝试使用Scanner对象,但是结果是相同的。对于给定输入到控制台的所有小写代码,该代码应该列出所有单词,没有重复。输入的末尾没有任何符号表示。我的代码如下:
TreeSet<String> words = new TreeSet<String>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
while((line = br.readLine()) != null) {
line = line.replaceAll("(?:--|[\\[\\]{}()+/\\\\,.;\":])", "").toLowerCase();
String[] trimmed = line.split(" ");
for(int j = 0; j < trimmed.length; j++) {
words.add(trimmed[j].toLowerCase());
}
//line = br.readLine();
}
for (int i = 0; i < words.size(); i++) {
System.out.println(words.pollFirst());
}
br.close();
样本输入:
迪士尼乐园的冒险活动当两个金发女郎去迪士尼乐园时 来到路边的叉子。标语上写着:“迪斯尼乐园左派”。 回家了。
示例输出:
a
adventures
blondes
came
disneyland
fork
going
home
in
left
read
road
sign
so
the
they
to
two
went
were
when
我的程序将连续运行,并且无法识别EOF指示器,为null。因此,它不会到达用于打印的最后一个for循环。我不知道为什么要这么做。任何线索都将非常有帮助。