Java掷骰子项目如何将dice.rollDice()返回的随机数存入数组
首先你现有写法randomNumbers[] = dice.rollDice()不符合Java语法规范,数组赋值必须明确指定要写入的索引位置。结合你声明了长度为7的int[]的使用场景,有两种最常用的实现方案,效率都是O(1)级别的写入,没有额外性能损耗:
场景1:数组用于统计1-6点数的出现次数(最符合你开长度7数组的用法)
你可以直接用rollDice()返回的点数本身作为数组索引,对应位置计数+1即可,代码示例:
Dice dice = new Dice(); // 单次按键触发的掷骰逻辑 int currentPoint = dice.rollDice(); randomNumbers[currentPoint]++; // 控制台输出结果 System.out.println("本次掷出点数:" + currentPoint); // 统计结果输出示例 for (int i = 1; i <= 6; i++) { System.out.printf("点数%d累计出现%d次%n", i, randomNumbers[i]); }
场景2:数组用于按顺序存储每次的掷骰结果
你需要额外维护一个索引计数器,标记当前数组的写入位置:
// 全局声明索引计数器,初始值为0 int writeIndex = 0; // 单次按键触发的掷骰逻辑 int currentPoint = dice.rollDice(); // 边界判断避免数组越界 if (writeIndex < randomNumbers.length) { randomNumbers[writeIndex] = currentPoint; writeIndex++; System.out.println("本次掷出点数:" + currentPoint); } else { System.out.println("结果存储数组已满,可清理历史记录后重试"); }
可选优化:Dice类性能优化
你现有Dice类的Random实例每次创建Dice对象都会生成新的随机种子,多次掷骰的随机分布均匀度不如全局复用同一个Random实例,修改如下即可:
class Dice { // 全局复用同一个Random实例 private static final Random random = new Random(); public int rollDice() { return 1 + random.nextInt(6); } }
内容的提问来源于stack exchange,提问作者Anthony Kielthy
相关产品推荐
相关产品推荐

