计数出现没有添加

时间:2019-06-17 20:05:20

标签: java arrays

我在问这个程序时遇到了麻烦:编写一个程序,该程序在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次。 有人能指出我正确的方向吗?

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),然后循环遍历数组-如果当前数字与最后一个数字相同,则添加计数,或者为新编号开始新计数。