【问题标题】:Counting number of times an int occurs in an array (Java)计算 int 在数组中出现的次数(Java)
【发布时间】:2017-02-13 00:24:41
【问题描述】:

我正在尝试在大小为 6 的数组中计算 ints 的出现次数,包括 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 数组。

【问题讨论】:

  • 为什么不使用 Collections.frequency() 来获取每个数组元素的计数
  • 你的想法很慢...@mhasan

标签: java arrays indexing int


【解决方案1】:
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;
    }

【讨论】:

  • 请检查您所需的输入输出。
【解决方案2】:

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

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 个ints 的数组。结果数组中的ith 数字将存储i+1 的出现次数。

OP 的 PoC

【讨论】:

  • 它似乎仍然关闭。输入值为 [1,2,4,4,3,5] 它给了我 [0,1,3,3,4,4],这是不对的。
  • 它在我的机器上返回 [1,1,1,2,1,0]。在我的Java Virtual Machine
  • @arnbobo 你能告诉我更多你的代码吗?我会尽力提供帮助。如果它开始工作,请随时将其标记为解决方案。
  • @arnbobo 不客气。我很乐意在未来解决您的问题。随时给我打电话评论。
猜你喜欢
  • 2017-03-24
  • 2015-06-19
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多