重复生成0到30之间的随机数,直到总数达到200或更多

时间:2018-04-26 00:11:17

标签: java arrays

这个随机程序应该:

  • 重复生成0到30之间的随机数,直到达到200或更多。
  • 将每个随机值放入ArrayList编号中,并将值打印在一行中。
  • 设置一系列计数器出现跟踪每种可能性的出现通过检查数字来填充数组
  • 将可能的值及其出现次数打印在两列中。
  • 确定并打印以句子形式出现的最常见数字。

我不确定我是否正确地做了,我也不知道如何打印常见的如何...请帮助我..我的代码如下:

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);
    }

}

1 个答案:

答案 0 :(得分:0)

首先,在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());
}

您需要确定满足最终项目符号点的最大数量。