gpt4 book ai didi

java - java中查找数组中的重复值

转载 作者:行者123 更新时间:2023-12-01 07:19:10 26 4
gpt4 key购买 nike

我正在尝试编写一个代码来查找数组中的重复值。到目前为止,我已经编写了以下代码:

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
//System.out.println("Please enter the length of Array: ");
int[] array = new int[6];
for(int i =0; i<array.length;i++) {
System.out.println("Enter value for index "+i+":");
array[i] = sc.nextInt();
}

FindDuplicateInArray obj = new FindDuplicateInArray();

obj.findDupicateInArray(array);
}

public void findDupicateInArray(int[] a) {
//int pointer = a[0];
int count=0;
for(int j=0;j<a.length;j++) {
for(int k =j+1;k<a.length;k++) {
if(a[j]==a[k] && j!=k && j<k && count<=1) {
count++;
if(count==1)
System.out.println(a[j]);

}

}


}

}

但我没有得到预期的输出,例如:

  1. 如果我给出值 1,2,1,4,3,1,那么它会成功找到重复值 1。

  2. 但是,如果我在数组中提供两组重复值,它仍然会找到第一个重复值。例如1,2,1,2,1,3。它只给出输出 1。

我发现结果不正确的原因是计数条件,即计数设置为大于 1 并且它与第一个 if 条件不匹配。

因此,我尝试在一次循环迭代后将计数器重置为 0,现在它给出所有重复值,但重复值打印两次。

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
//System.out.println("Please enter the length of Array: ");
int[] array = new int[6];
for(int i =0; i<array.length;i++) {
System.out.println("Enter value for index "+i+":");
array[i] = sc.nextInt();
}

FindDuplicateInArray obj = new FindDuplicateInArray();

obj.findDupicateInArray(array);
}

public void findDupicateInArray(int[] a) {
//int pointer = a[0];
int count=0;
for(int j=0;j<a.length;j++) {
for(int k =j+1;k<a.length;k++) {
if(a[j]==a[k] && j!=k && j<k && count<=1) {
count++;
if(count==1)
System.out.println(a[j]);

}

}
**count = 0;**

}

}

例如输入:1,2,1,2,1,2,输出:1 2 1 2

请建议如何获得正确的结果。

最佳答案

我不喜欢使用 Streams 或高级别的东西来解决算法问题;只有普通的java。这就是我的解决方案:

public static Set<Integer> findDuplicateInArray(int... arr) {
Set<Integer> unique = new HashSet<>();
Set<Integer> duplicate = new HashSet<>();

for (int val : arr)
if (!unique.add(val))
duplicate.add(val);

return duplicate;
}

如果您能够修改传入的 arr ,然后稍微修改一下,就可以拒绝 Set<Integer> unique .

关于java - java中查找数组中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46419403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com