我正在尝试在大小为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数组。
答案 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
的出现次数。
答案 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;
}