在这里,我编写了Java代码,以在文本文件中显示重复的数字.这里我硬编码了文本文件的路径名.我假设文本文件只包含文本文件的每一行中的数字.
我只想显示那些重复的数字.代码如下所示:
import java.util.*;
import java.io.*;
public class FileRead {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<String,String> lines=new HashMap<String,String>();
try{
FileInputStream fstream=new FileInputStream("C:/Users/kiran/Desktop/text.txt");
DataInputStream in=new DataInputStream(fstream);
BufferedReader br=new BufferedReader(new InputStreamReader(in));
ArrayList arr=new ArrayList();
String str,str1;
int i=0;
while((str=br.readLine())!=null){
i++;
str1=Integer.toString(i);
if(lines.containsValue(str)){
System.out.println(str);
}else{
lines.put(str1, str);
}
}
in.close();
}catch(Exception e){
System.out.println(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
文本文件的内容如下所示:
56
75
1
46
100
97
75
46
46
Run Code Online (Sandbox Code Playgroud)
预期产出是:
75
46
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
75
46
46
Run Code Online (Sandbox Code Playgroud)
我无法找出程序中的错误.谁能帮我??
你需要跟踪你打印的内容,例如a HashSet<String>
.
Set<String> seen = new HashSet<String>()
在顶部声明,然后添加if
:
if(lines.containsValue(str)){
if (seen.add(str)) {
System.out.println(str);
}
} else {
lines.put(str1, str);
}
Run Code Online (Sandbox Code Playgroud)
更简单的解决方案是删除else
:
if(lines.containsValue(str)){
System.out.println(str);
}
lines.put(str1, str);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2124 次 |
最近记录: |