小白询问Java教材上的一道题。

老师给的PPT里是这样提示的。
图片说明
题目是
调用java.lang.Math的成员函数“public static double random()”运算下面表达式10000次,
(int) (Math.random()*20+0.5)
统计其中生成的整数0、1、2、……、20的个数分别是多少,并输出统计结果

我是这样写的
图片说明
请问各位书上说的方法怎么实现,或者,有没有更好的思路?

去吧,交作业吧,如果老师认真看的话会说:这就叫结构化程序设计的思想。你先了解面向对象思想吧。

定义一个长度为20的数组,初始化为0,每次取下标未为(int) (Math.random()*20+0.5)-1的数组元素加一

强行写一个,自己优化一下代码呗

 package mathDemo;

public class MyDemo {
    static int[] arr = new int[20];
    static int[] nums = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,0};
    static int[] account = new int[21];
    public static void setArr(int[] arr) {
        for (int i = 0; i < 20; i++) {
            arr[i] = (int) (Math.random()*20 + 0.5);
        }
    }
    public static void getAccount(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < nums.length; j++) {
                if (arr[i] == nums[j]) {
                    account[j] += 1;
                }
            }
        }
    }
    public static void runSetter() {
        for (int i = 0; i < 10000; i++) {
            setArr(arr);
            getAccount(arr);
        }
        for (int j = 0; j < 21; j++) {
            System.out.println("整数" + nums[j] + ": " + account[j]);
        }
    }
    public static void main(String[] args) {
        runSetter();
    }
}

 public class Test_3_Math {

    private static int[] arr=new int [21];

    public Test_3_Math() {
        //初始化
        for (int i = 0; i < arr.length; i++) {
            arr[i] = 0;
        }
    }

    public static void main(String[] args) {

        for (int i = 0; i < 10000; i++) {
            //生成10000个随机整数
            int a = (int) (Math.random()*20+0.5);
            for (int j = 0; j <=20; j++) {
                if (a==j) {
                    arr[j]++;
                }
            }
        }

        int sum = 0;
        for (int i = 0; i < 20; i++) {
            sum+=arr[i];
        }
        System.out.println("总数"+sum);

        for (int i = 0; i <= 20; i++) {
            System.out.println(i+"有"+arr[i]+"个");
        }
    }
}

图片说明

根据提示做题啊,不是让你实现。实现的方式一大堆 :
题目的提示其实就是面向对象,设计 一个类A
package cn.test;

public class A {
private int[] elements = new int[1000];
private int[] counts = new int[21];
public A(){
for(int i=0;i<elements.length;i++){
elements[i]=(int) (Math.random()*20+0.5);
}
}
public void calculate(){
for(int i=0;i<elements.length;i++){
counts[elements[i]] ++;
}
}
public void output(){
for(int i=0;i<counts.length;i++){
System.out.println(String.format("%d 共有%d个", i,counts[i]));
}
}
public static void main(String[] args) {
A a =new A();
a.calculate();
a.output();
}
}
0 共有21个
1 共有58个
2 共有44个
3 共有45个
4 共有47个
5 共有69个
6 共有56个
7 共有48个
8 共有37个
9 共有47个
10 共有51个
11 共有52个
12 共有46个
13 共有46个
14 共有51个
15 共有53个
16 共有52个
17 共有53个
18 共有57个
19 共有43个
20 共有24个