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

如何用循环将随机数存入数组并实现后续数组求和比较?

完善随机数数组存储与求和比较的Java实现

Hey,我看你已经写了Die类的基础框架,现在帮你完善随机数数组存储、求和以及不同数组总和比较的功能。先挑出现有代码里的几个小问题,再一步步扩展出完整功能:

现有代码的小问题

  • rollDie()方法里的randomNumbers.nextInt(6*1)生成的是0-5的整数,但骰子点数应该是1-6,得调整生成逻辑
  • displayDie()里创建的数组是局部变量,方法执行完就销毁了,没法后续用来求和比较
  • 输出语句只打印了die[1],没遍历完所有数组元素,而且数组索引从0开始,要注意遍历逻辑

修改后的完整实现

先更新Die类,添加数组存储、求和、比较的核心功能:

import java.util.Random;

public class Die {
    private int dieValue = 0;
    private Random randomNumbers = new Random();
    // 新增成员变量存储骰子数组,方便后续操作
    private int[] diceArray;

    public Die() {
    }

    // 修正:生成1-6的随机数(模拟标准骰子)
    public void rollDie() {
        dieValue = randomNumbers.nextInt(6) + 1;
    }

    // 生成指定长度的骰子数组并存储
    public void generateDiceArray(int length) {
        diceArray = new int[length];
        for (int counter = 0; counter < diceArray.length; counter++) {
            rollDie();
            diceArray[counter] = dieValue;
        }
    }

    // 显示当前骰子数组的内容
    public void displayDiceArray() {
        if (diceArray == null) {
            System.out.println("请先生成骰子数组!");
            return;
        }
        System.out.print("Your Dies are: ");
        for (int i = 0; i < diceArray.length; i++) {
            if (i > 0) {
                System.out.print(", ");
            }
            System.out.print(diceArray[i]);
        }
        System.out.println();
    }

    // 计算当前骰子数组的总和
    public int calculateSum() {
        if (diceArray == null) {
            return 0;
        }
        int sum = 0;
        for (int num : diceArray) {
            sum += num;
        }
        return sum;
    }

    // 比较两个Die对象的数组总和
    public void compareSum(Die anotherDie) {
        int mySum = this.calculateSum();
        int anotherSum = anotherDie.calculateSum();

        System.out.println("我的骰子总和:" + mySum);
        System.out.println("另一个骰子总和:" + anotherSum);

        if (mySum > anotherSum) {
            System.out.println("我的总和更大!");
        } else if (mySum < anotherSum) {
            System.out.println("另一个的总和更大!");
        } else {
            System.out.println("两个总和相等!");
        }
    }

    // 提供获取数组的方法,方便外部自定义操作
    public int[] getDiceArray() {
        return diceArray;
    }
}

测试功能的示例代码

写个测试类演示怎么生成数组、查看内容、比较总和:

public class DieTest {
    public static void main(String[] args) {
        // 创建第一个Die实例,生成3个骰子的数组
        Die die1 = new Die();
        die1.generateDiceArray(3);
        die1.displayDiceArray();

        // 创建第二个Die实例,生成5个骰子的数组
        Die die2 = new Die();
        die2.generateDiceArray(5);
        die2.displayDiceArray();

        // 比较两个数组的总和
        die1.compareSum(die2);
    }
}

关键功能说明

  • diceArray成员变量:专门存储生成的骰子数组,确保数据能被后续方法复用
  • generateDiceArray(int length):按需生成指定长度的随机骰子数组,替代原来的局部数组逻辑
  • calculateSum():遍历数组计算总和,为比较功能提供数据支撑
  • compareSum(Die anotherDie):直接接收另一个Die对象,对比两者的总和并输出结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:52:48