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

如何修复骰子测试类中roll()方法故障,实现1000次掷骰频率统计?

修复掷骰子测试程序中的roll()方法问题

我来帮你排查并修复这个问题!首先,咱们先确认**骰子类(Die)**的正确实现,然后再修正测试程序里的常见错误。

第一步:正确实现Die类

你的Die类需要包含一个public的roll()方法,返回1到6之间的随机整数。这里要注意,Random.nextInt(n)会返回0到n-1的整数,所以必须加1才能得到1-6的范围。

import java.util.Random;

public class Die {
    private Random randomGenerator;

    // 构造方法初始化随机数生成器
    public Die() {
        randomGenerator = new Random();
    }

    // 核心的roll方法,返回1-6的随机整数
    public int roll() {
        // nextInt(6)生成0-5,加1后转为1-6
        return randomGenerator.nextInt(6) + 1;
    }
}

第二步:修复测试类的问题

测试程序无法正常工作,大概率是因为你没有正确调用Die类的roll()方法,而是自己在测试类里写了一个错误的实现。下面是正确的测试类代码:

public class DieRollTest {
    public static void main(String[] args) {
        final int TOTAL_ROLLS = 1000;
        // 用数组统计点数出现次数,索引0闲置,1-6对应点数1到6
        int[] pointCounts = new int[7];

        // 必须创建Die类的实例,通过实例调用它的roll方法
        Die myDie = new Die();

        // 执行1000次掷骰子
        for (int i = 0; i < TOTAL_ROLLS; i++) {
            int result = myDie.roll(); // 调用Die类的public roll方法
            pointCounts[result]++;
        }

        // 输出统计结果
        System.out.println("1000次掷骰子的点数频率统计:");
        for (int point = 1; point <= 6; point++) {
            double frequency = (double) pointCounts[point] / TOTAL_ROLLS * 100;
            System.out.printf("点数%d:出现%d次,频率%.2f%%%n", point, pointCounts[point], frequency);
        }
    }
}

常见错误排查

如果你的测试类之前无法工作,可能是以下原因之一:

  • 错误1:测试类自己实现了roll方法:你可能在测试类里写了一个int roll()方法,但没有正确生成1-6的随机数,或者完全没有使用Die类的实例。
  • 错误2:Die类的roll方法实现错误:比如直接返回random.nextInt(6)(这样得到的是0-5,不符合需求),或者没有加1。
  • 错误3:尝试静态调用roll方法:roll是实例方法,必须先创建Die的对象,才能调用它,不能用Die.roll()这种静态调用方式。

运行效果

运行测试类后,你会看到类似这样的输出(每次结果会有随机波动,但各点数频率应该接近16.67%):

1000次掷骰子的点数频率统计:
点数1:出现162次,频率16.20%
点数2:出现175次,频率17.50%
点数3:出现168次,频率16.80%
点数4:出现159次,频率15.90%
点数5:出现167次,频率16.70%
点数6:出现169次,频率16.90%

内容的提问来源于stack exchange,提问作者Jianna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:32:53