[英]Count Occurence isn't adding
我遇到这个程序有问题,问我:编写一个程序,在0-9之间生成10个整数,并显示每个数字的计数。 我在每个单位数字的计数发生时遇到问题。 看来我的程序没有添加正确的计数器。 这是我的计划:
我试图阅读其他代码以帮助解决它,但没有任何效果。
import java.util.*;
import java.util.Arrays;
public class CountsArray {
public static void main(String[] args) {
int[] list = new int[10];
int[] num = new int[10];
for(int i = 0; i< list.length;i++) {
list[i] = (int)(Math.random()*10+1);
}
for(int i = 0; i< list.length;i++) {
System.out.print(list[i] + " ");
}
System.out.println();
int temp = 0;
for(int i = 0; i <num.length;i++) {
temp = num[i];
list[temp]++;
}
for(int i = 0;i < list.length;i++) {
if(list[i]>0 && list[i]==1) {
System.out.printf("%d occurs %d time\n",i, list[i]);
}
else if(list[i] >= 2) {
System.out.printf("%d occurs %d times \n", i, num);
}
}
}}
如果随机数为:1 1 2 2 2 3 3输出应该是1次发生2次,2次发生3次,3次发生2次。 有人能指出我正确的方向吗?
一种方法是确保数字有序(看看Arrays.sort
),然后遍历数组 - 如果当前数字与最后一个相同,则添加到计数,或者否则为新号码开始新的计数。
你可以这样做,首先因为随机整数是0到9所以在Math.random()中加1也会产生10个问题,然后按照问题增加位数(即如果你在列表中遇到3个)当你遍历列表然后打印num,如果num [i]> 0,那么将num [3]增加1,因为3的计数现在为1)因为可能存在根本没有发生的整数。
`int[] list = new int[10];
int[] num = new int[10];
for(int i = 0; i< list.length;i++) {
list[i] = (int)(Math.random()*10);
}
for(int i = 0; i< list.length;i++) {
System.out.print(list[i] + " ");
}
System.out.println();
for (int i = 0; i < list.length; i++) {
++num[list[i]];
}
for (int i = 0; i < num.length; i++) {
if(num[i]>0){
System.out.printf("%d occurs %d times\n",i,num[i]);
}
}`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.