在数组中查找重复项

时间:2014-10-26 21:51:54

标签: java eclipse

嘿,我一直在乱搞java并创建了这个程序,它将通过一个数组并找到数组中的所有副本及其工作,这很棒!但是如果我运行程序有一个小问题,并且有一个值超过2个副本,它将输出两个重复的相同值 - 这可能会更好地解释它

输出

Duplicates in Array: 1
Duplicates in Array: 8
Duplicates in Array: 8

我已经被困在这一段时间了,现在我知道这可能是一些小错误,但是如果有人能帮我解决这个问题会很棒,代码就在下面,谢谢

import java.util.Arrays;
public class Duplicates {
    public static void main (String[] args) {
        int[] values = { 8, 5, 9, 8, 6, 13, 33, 1, 98, 12, 8, 1 };
        Arrays.sort(values);
        for(int i = 1; i < values.length; i++) {
            if(values[i] == values[i - 1]) {
                System.out.println("Duplicates in Array: " + values[i]);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

如果我理解了您的问题,那么您可以添加一个while循环,以便在报告重复项之后继续进行重复。像,

public static void main(String[] args) {
    int[] values = { 8, 5, 9, 8, 6, 13, 33, 1, 98, 12, 8, 1 };
    Arrays.sort(values);
    for (int i = 1; i < values.length; i++) {
        if (values[i] == values[i - 1]) {
            System.out.println("Duplicates in Array: " + values[i]);
            while (values[i] == values[i - 1]) { // <-- add this
                i++;
            }
        }
    }
}

输出

Duplicates in Array: 1
Duplicates in Array: 8

答案 1 :(得分:0)

我不确定你是否被允许在你的例子中使用arraylists但是如果你那么你可以轻松存储你已经拥有的值,并且在每个for循环中你可以检查是否有任何重复。

for (int i = 0; i < values.length; i++) {

        for (int j = i + 1; j < values.length; j++) {
            if (values[i] == values[j] && !foundValues.contains(values[j])) {
                System.out.println("Duplicates in Array: " + values[i]);
                foundValues.add(values[i]);
            }
        }
    }

输出

Duplicates in Array: 1
Duplicates in Array: 8
相关问题