首页 > 解决方案 > 重复生成一个从 0 到 30 的随机数,直到总共达到 200 或更多

问题描述

这个随机程序应该:

我不确定我是否做对了,我也不知道如何在如何打印常见的情况下获得这些事件......请帮助我..我的代码如下:

import java.util.ArrayList;
public class Random {
public static void main(String[] args) {
    // TODO Auto-generated method stub
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    int counter = 0, num;
    int total = 0;
    do{
        num=(int) (Math.random()*30);
        System.out.print(num +" ");
        total+=num;
        numbers.add(num);
        for (int i=0;i<numbers.size();i++){
            if(i==num){
                counter++;
            }       
        }
    }while (total<=200);
    System.out.println();
    System.out.println(" Numbers " +"   "+ "Occurences");
    System.out.println("  "+ num + "         "+ counter);
    }

}

标签: javaarrays

解决方案


首先,在具体类型上使用List接口。ArrayList其次,List在尝试计算出现次数之前生成整体。就像是

List<Integer> numbers = new ArrayList<>();
int total = 0;
do {
    int num = (int) (Math.random() * 30);
    System.out.print(num + " ");
    total += num;
    numbers.add(num);
} while (total <= 200);
System.out.println();
System.out.println("Numbers \t Occurences");
for (int num : numbers) {
    System.out.printf("%5d \t %5d%n", num, numbers.stream()
            .filter(x -> x.equals(num)).count());
}

您将需要确定满足最终要点的最大计数。


推荐阅读