java - 读取用户输入并打印重复行

java - read user input and print line if it is a duplicate

所以我正在学习如何在 java 中读取文本文件,我正在尝试编写一个程序,一次读取用户输入一行,并在且仅当它是一些前一行的副本。这是我正在努力处理的代码部分,想知道我是否可以朝着正确的方向前进。现在它正在要求用户输入,当我写一行并按回车键时,程序结束而不打印任何内容。

public static void doIt(BufferedReader r, PrintWriter w) throws IOException {
    Set<String> s = new HashSet<String>();


    while(true) {
        String line = r.readLine();
        if(s.contains(line)) {
            s.add(line);
        }else {
            break;
        }
    }


    for (String text : s) {
        w.println(text);
    }       
}

您可以保留两种可变状态,一种用于所有行,另一种用于重复行。

示例如下。 (您可以在 :q 退出程序)。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;

public class CheckDupes {

    public static void main(String[] args) throws IOException {
        Set<String> lines = new HashSet<String>();
        Set<String> duplicateLines = new HashSet<String>();

        BufferedReader stdReader =
                new BufferedReader(new InputStreamReader(System.in));

        String line = null;
        while (!(line = stdReader.readLine()).equals(":q")) {
            if (lines.contains(line)) {
                duplicateLines.add(line);
            } else {
                lines.add(line);
            }
        }

        duplicateLines.forEach(l -> System.out.println(l));
    }

}

输入/输出

love is great
weather is good
software is version 4
weather is good
love is great
:q
weather is good
love is great