为什么我的BufferedReader对象停止我的程序

时间:2019-02-28 01:55:13

标签: java io java.util.scanner bufferedreader eof

我非常困惑为什么当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循环。我不知道为什么要这么做。任何线索都将非常有帮助。

0 个答案:

没有答案