计算给定数组中的重复项数量

时间:2019-01-27 12:54:18

标签: java

输入:1,4,2,6,7,5,1,2 输出:2

计算给定Java数组中重复数字的数量。我首先对数组进行排序,然后计算重复项。它向我显示错误,未使用变量c,并且此方法应返回int的值。

public class Duplicates
public static void main(String[] args) {
    int[]list;
    int[]c;
        int[] c = new int[list.length];
        int temp;
        for (int i = 0; i < list.length - 1; i++) {
            for (int j = i + 1; j < list; j++) {
                if (list[I] > list[j]) {
                    temp = list[i];
                    list[i] = list[j];
                    list[j] = temp;
                    c = list;
                }
            }
        }
        int n = 0;
        int counter = 0;
        int a = -1;
        for (int i = 0; i < c.length; ++i) {
            if (c[i] == a) {
                ++n;
                if (n == 1) {
                    ++counter;
                    if (counter == 1) {
                        System.out.print(c[i]);
                    } else {
                        System.out.print("," + c[i]);
                    }
                }
            } else {
                a = c[i];
                n = 0;
            }
        }
        System.out.println("\nNumber of Duplicated Numbers in array:" + counter);
    }
}

1 个答案:

答案 0 :(得分:0)

  

向我显示未使用变量c的错误

这应该是一个警告。因此,即使显示了该代码,代码仍应正确运行。

  

此方法应返回int值

这是一个编译错误,由于您没有在方法末尾返回任何int数组,因此您方法的返回类型应为void。您应该按以下方式更改方法签名,

public static void c(int[] list)

否则,您将需要在方法末尾返回一个int数组。

修改代码后,

public class Duplicates {
    public static void main(String[] args) {
        int[] list = new int[]{1, 4, 2, 6, 7, 5, 1, 2};
        int temp;

        for (int i = 0; i < list.length; ++i) {
            for (int j = 1; j < (list.length - i); ++j) {
                if (list[j - 1] > list[j]) {
                    temp = list[j - 1];
                    list[j - 1] = list[j];
                    list[j] = temp;
                }
            }
        }

        int n = 0, counter = 0;
        int previous = -1;
        for (int i = 0; i < list.length; ++i) {
            if (list[i] == previous) {
                ++n;
                if (n == 1) {
                    ++counter;
                    if (counter == 1) {
                        System.out.print(list[i]);
                    } else {
                        System.out.print(", " + list[i]);
                    }
                }
            } else {
                previous = list[i];
                n = 0;
            }
        }

        System.out.println("\nNumber of Duplicated Numbers in array: " + counter);
    }
}