如何计算数组中的0,1,2的数字。
我有一个数组int [] A= {0,0,0,0,1,1,2,2,2}
,我怎么能用java来计算数字0,1和2。
我只知道下面的代码用于计算数组中的元素:
投票结束 迭代它并计算非空的元素: int counter = 0;
for (int i = 0; i < A.length; i ++)
if (A[i] != null)
counter ++;
/////////////////////////////////////////////// ////////////////////////////////
int idx [] = { 1,1,1,1,1,0,0,0,0,0,0,2,2,2};
int[] count_x1 =new int[X]; //x==3. for example
for (int j : idx){
count_x1[j]++;
}
我更新代码仍有错误:(
答案 0 :(得分:1)
int [] A = {0,0,0,0,1,1,2,2,2}是一个数组,你可以使用一个集合并调用方法Collections.frequency
int[] A = { 0, 0, 0, 0, 1, 1, 2, 2, 2 };
List<Integer> l = new ArrayList<>();
for (int i : A) {
l.add(i);
}
System.out.println(Collections.frequency(l, 0));
System.out.println(Collections.frequency(l, 1));
System.out.println(Collections.frequency(l, 2));
答案 1 :(得分:0)
首先,您需要一个大小为3的辅助数组来跟踪每个数字0,1,2出现在输入数组中的次数。
然后迭代输入数组并将与您遇到的数字对应的辅助数组单元格增加1。
见下面的代码
Integer[] numToSearch = { 0,1,2 };
Integer[] helper = new Integer[3];
for (int i=0;i<3;i++)
helper[i] = 0;
for (int i = 0; i < A.length; i ++)
if (A[i] == numToSearch[0])
helper[0]++;
if (A[i] == numToSearch[1])
helper[1]++
if (A[i] == numToSearch[2])
helper[2]++;
for (int i=0;i<helper.length;i++)
System.out.println("Number of " + numToSearch[i] + "s in array: "+helper[i]);
答案 2 :(得分:0)
假设您只继续值(0,1,2,3 ....)
int[] A = {0, 0, 0, 0, 1, 1, 1, 2, 2, 2}; // any number and values will work!
int max = IntStream.of(A).max().getAsInt(); // gets max value in array
int[] counter = new int[max + 1];
for (int i = 0; i < A.length; ++i)
counter[A[i]]++;
答案 3 :(得分:0)
你到底想要改变什么? if语句或整个代码块?我个人会使用开关/盒子来替换if检查,只要你知道你的阵列只有0,1和2。如果你也知道你的数组是有序的,你可以只计算数组中元素的数量,直到元素发生变化。
答案 4 :(得分:0)
如果你想要的是在一个int数组中计算任意值,你可以使用它:
Map<Integer, Integer> counter = new HashMap<>();
int [] A= {0,0,0,0,1,1,2,2,2};
for (int i : A) {
Integer currentCount = counter.get(i);
counter.put(i, (currentCount == null) ? 1 : currentCount + 1);
}
for (Integer i : counter.keySet())
System.out.println(i + ": " + counter.get(i));