You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:24:07