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
所以我正在学习如何在 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