【发布时间】:2018-07-24 14:34:24
【问题描述】:
我想从数组中找出重复的元素和索引号。我为此写了一个代码。它运行良好,但仅在重复元素数量超过 2 时无法生成准确的输出。我从文件中读取值,然后构建一个数组,然后从该数组中搜索重复元素。
import java.io.File;
import java.util.Arrays;
import java.util.Scanner;
public class T1 {
public static void main(String args[]) throws Exception{
Scanner x=new Scanner(new File("C:\\Duplicate_array.txt"));
int [] duplicate_data=new int[9];
int i1=0;
while(x.hasNext()){
int a=x.nextInt();
duplicate_data[i1]=a;
i1++;
}
System.out.println(Arrays.toString(duplicate_data));
for (int i = 0; i < duplicate_data.length-1; i++) {
for (int j = i+1; j < duplicate_data.length; j++) {
if ((duplicate_data[i] == duplicate_data[j]) && (i != j)) {
System.out.println("Duplicate Element : "+duplicate_data[j]);
System.out.println("Index of that duplicate element : "+j);
}
}
}
}
}
这是我的输出:
[5, 6, 1, 6, 9, 5, 2, 1, 5]
Duplicate Element : 5
Index of that duplicate element : 5
Duplicate Element : 5
Index of that duplicate element : 8
Duplicate Element : 6
Index of that duplicate element : 3
Duplicate Element : 1
Index of that duplicate element : 7
Duplicate Element : 5
Index of that duplicate element : 8
最后一行出错。它已经在第 8 号位置的开头找到了 5。但在程序结束时它再次搜索 5 并给出位置号。最后的搜索是不必要的。如何摆脱最后一次搜索?
【问题讨论】:
-
您能否添加一个输入示例?谢谢
-
您可以在算法中使用
Set还是只需要使用普通数组?
标签: java arrays sorting java.util.scanner