我在问这个程序时遇到了麻烦:编写一个程序,该程序在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次。 有人能指出我正确的方向吗?
答案 0 :(得分:1)
您可以这样操作,首先因为随机整数是0到9,所以将1加到Math.random()上也会产生10,这对于每个问题都是错误的 然后在遍历列表时递增num的位置(即,如果列表中遇到3,则将num [3]递增1,因为现在计数3现在为1),然后如果num [i]> 0则打印num完全没有出现的整数。
`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]);
}
}`
答案 1 :(得分:0)
执行此操作的一种方法是确保数字顺序正确(请查看a
),然后循环遍历数组-如果当前数字与最后一个数字相同,则添加计数,或者为新编号开始新计数。