我正在使用以下代码,这给了我在数组的每个位置的重复值 所以建议我做什么
String sCurrentLine;
String username[] = new String[30];
String Arrival[] = new String[30];
String Departure[] = new String[30];
int var = 0, var2;
BufferedReader br = new BufferedReader(new FileReader("E:\\Shubham Projects\\Input.txt"));
while ((sCurrentLine = br.readLine()) != null) {
String[] information = sCurrentLine.split(" ");
var2 = information.length + var;
for (int i = var; i < var2; i++) {
System.out.println(i);
username[i] = information[0];
Arrival[i] = information[1];
Departure[i] = information[2];
var++;
}
}
for (int i = 0; i < username.length; i++)
System.out.println(username[i] + " " + Arrival[i] + " " + Departure[i]);
输入:
Jai 10:15 11:10
Jai 10:10 11:00
Veeru 10:10 11:00
Veeru 16:30 18:45
Jai 12:05 12:30
Veeru 12:30 13:25
Veeru 12:45 13:25
Jai 17:25 18:01
输出:
Jai 10:15 11:10
Jai 10:15 11:10
Jai 10:15 11:10
Jai 10:10 11:00
Jai 10:10 11:00
Jai 10:10 11:00
Veeru 10:10 11:00
Veeru 10:10 11:00
Veeru 10:10 11:00
Veeru 16:30 18:45
Veeru 16:30 18:45
Veeru 16:30 18:45
Jai 12:05 12:30
Jai 12:05 12:30
Jai 12:05 12:30
Veeru 12:30 13:25
Veeru 12:30 13:25
Veeru 12:30 13:25
Veeru 12:45 13:25
Veeru 12:45 13:25
Veeru 12:45 13:25
Jai 17:25 18:01
Jai 17:25 18:01
Jai 17:25 18:01
null null null
null null null
null null null
null null null
null null null
null null null
答案 0 :(得分:2)
您可以使用Set
数据结构,不允许重复。
尝试:
Set<String> resultSet = new HashSet<String>(Arrays.asList(username));
resultSet
将拥有唯一的字符串。
答案 1 :(得分:1)
Inner for循环导致了这个问题,因为你要从每一行抓取信息三次。
var2 = information.length + var;
for (int i = var; i < var2; i++) {
System.out.println(i);
username[i] = information[0];
Arrival[i] = information[1];
Departure[i] = information[2];
var++;
}
Jai 10:15 11:10
读取此行时,var2将计算为3(假设var为0)。现在它将在for循环中运行三次,为您提供重复的条目。
Shriram的解决方案将解决此问题,Amila的回复将解决输入文件中重复条目的问题。
答案 2 :(得分:0)
使用set并打印结果,因为Set不允许重复。
使用以下逻辑
int count = 0;
while ((sCurrentLine = br.readLine()) != null) {
String[] information = sCurrentLine.split(" ");
// for (int i = 0; i < information.length; i++) {
username[count] = information[0];
Arrival[count] = information[1];
Departure[count] = information[2];
// }
count++;
}
打印输出后,剩余的空值只不过是你已经使用30的初始化字符串数组。使用动态数组的集合类。另外我说使用Set来避免重复