java - 重复生成一个从 0 到 30 的随机数,直到总共达到 200 或更多
问题描述
这个随机程序应该:
- 重复生成一个从 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);
}
}
解决方案
首先,在具体类型上使用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());
}
您将需要确定满足最终要点的最大计数。
推荐阅读
- amazon-web-services - Enable Amazon S3 bucket to Trigger Lambda function using SAM
- android - DeviceInfo.Model 上的 Xamarin Android 错误
- raku - 交界处~~交界行为
- sql - 使用 SQL Server 过滤连续的日期范围
- android - 关于 Genymotion 上的网络、chromecast 和虚拟 Galaxy 3a 的问题
- sql - 只需根据条件从 LEFT JOIN 语句中返回一条记录
- ios - Firebase 身份验证 Twitter API 登录“这里没什么可看的”
- reactjs - 在本机反应中点击活动选项卡时滚动到顶部
- list - 附加到列表行为不正常
- android - 带有自定义 PopupMenu 的窗口管理器