计算数组中出现int的次数(Java)

时间:2016-10-04 18:09:17

标签: java arrays indexing int

我正在尝试在大小为6的数组中计算int s的出现次数,包括1到6次。我想返回一个数组,其中包含int出现在每个索引中的次数,但有一个在零指数。
示例:

输入[3,2,1,4,5,1,3]
预期输出[2,1,2,1,1,0]

问题:
它输出[1,1,3,0,1,0],代码摘录如下。我怎样才能解决这个问题?我无法找到我出错的地方。

public static int arrayCount(int[] array, int item) {
    int amt = 0;
    for (int i = 0; i < array.length; i++) {
        if (array[i] == item) {
            amt++;
        }
    }
    return amt;
}

public int[] countNumOfEachScore(){
    int[] scores = new int[6];
    int[] counts = new int[6];
    for (int i = 0; i < 6; i++){
        scores[i] = dice[i].getValue();
    }
    for (int j = 0; j < 6; j++){
        counts[j] = arrayCount(scores, j+1);
    }
    return counts;
}

dice []只是一个Die对象数组,它有一个方法getValue(),它返回1到6之间的int,包括1和6。 counts []是内容错误的int数组。

2 个答案:

答案 0 :(得分:4)

编写另一个代码而不是调试你的代码会更快。

public static int[] count(int[] array) {
    int[] result = new int[6];
    for (int i = 0; i < array.length; i++) {
        try{
            result[array[i]-1]++;
        } catch (IndexOutOfBoundsException e) {
            throw new IllegalArgumentException("The numbers must be between 1 and 6. Was " + String.valueOf(array[i]));
        }
    }
    return result;
}

以上将导致6 int s的数组。结果数组中的i数字将存储i+1的出现次数。

OP的PoC
enter image description here

答案 1 :(得分:-2)

public static void main(String [] args){
        int []ar=new int[]{3,2,1,4,5,1,3};
        System.out.println(Arrays.toString(counter(ar)));

    }


public static int[] counter(int []ar){
        int []result=new int [6];
        for(int i=0;i<ar.length;i++){
            int c=0;
            for(int j=0;j<ar.length;j++){
                if(j<i && ar[i]==ar[j])
                    break;
                if(ar[i]==ar[j])
                    c++;
                if(j==ar.length-1){
                    result[i]=c;
                }
            }
        }
        return result;
    }