如何将此程序转换为数组?

时间:2014-11-29 07:23:05

标签: java

import java.util.Random;

public class Hi {

    public static void main(String[] args) {
        Random random = new Random();
        int integer = random.nextInt(100 - 0) + 0;

        System.out.println(sumDigits(integer));
    }
    public static int sumDigits(int n) {

        int sumOfInteger = 0;
        while (n != 0) {
            sumOfInteger += n % 10;
            n /= 10;
        }
        return sumOfInteger;
    }
}

我需要使用数组而不是常规数组。 这就是我必须要做的 生成0到9之间的100个随机整数的程序,并显示每个数字的计数。 (提示:使用十个整数的数组,比如计数,来存储0,1,...,9s的计数。) 我得到的是单数而不是数。但同时我必须使用数组。

import java.util.Arrays;
import java.util.Random;

public class Hw7Problem3 {

    public static void main(String[] args) {

    System.out.println(sumDigits());

    }
    public static int[] sumDigits(int random) {

        int[] digits = new int[10];
        for (int i = 0; i < 100; i++){
          digits[(int) (Math.random() * 10)]++;
        }
        return digits;
    }
}

2 个答案:

答案 0 :(得分:0)

我希望这会对你有所帮助:

int counts[] = new int[10];
for(int i = 0; i < 100; i++) {
    int rnd = random.nextInt(10);
    counts[rnd] = counts[rnd] + 1;
}

因此,在计数[N]中,您可以找到N随机生成的次数。

答案 1 :(得分:0)

你的任务是在0到10之间创建100个随机整数。所以我们需要从一个digits数组开始计算。我们可以使用Math.random()并乘以10(以获得0到9之间的数字),并在digits中增加该索引。像

这样的东西
int[] digits = new int[10];
for (int i = 0; i < 100; i++)
  digits[(int) (Math.random() * 10)]++;

然后用

打印它
System.out.println(Arrays.toString(digits));

我跑了两次

[11, 11, 9, 9, 6, 11, 9, 13, 11, 10]

[8, 6, 5, 11, 10, 9, 13, 10, 15, 13]

这似乎表明它有效。