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

Java骰子程序求和异常求助:首次正确,后续计算错误

Java骰子程序求和错误问题修复

问题根源分析

  • 骰子点数显示错误:主程序中打印单个骰子点数时,错误调用了getSumValues()(返回累加值),而非getValue()(返回当前点数)。
  • 累加变量未重置:Die类的reset()方法未重置sumValues,导致每次掷骰子时该变量持续累加历史点数,后续显示值越来越大。
  • 冗余变量存在:Die类中的total变量未被使用,属于无效代码。

修复后的代码

DiceOOP类

import java.util.Scanner;

public class DiceOOP {
    public static void main(String[] args) {
        Die die1 = new Die();
        Die die2 = new Die();
        int total;
        char answer = 'y';
        Scanner scanner = new Scanner(System.in);

        while (answer == 'y') {
            die1.roll();
            die2.roll();
            total = die1.getValue() + die2.getValue();
            // 修复:调用getValue()获取当前骰子点数
            System.out.println("Dice 1 value is : " + die1.getValue());
            System.out.println("Dice 2 value is : " + die2.getValue());
            die1.reset();
            die2.reset();
            System.out.println("The total value rolled between both dice is: " + total);

            System.out.println("\nDo you want to roll the dice again? (y/n)");
            answer = scanner.next().charAt(0);
        }
    }
}

Die类

public class Die {
    public int value;
    // 若无需记录骰子历史累加点数,直接删除sumValues相关代码
    // public int sumValues;
    // 删除未使用的冗余变量total
    // public int total;

    public void roll() {
        value = (int) (6 * Math.random()) + 1;
        // 若无需累加功能,删除该行
        // sumValues += value;
    }

    public int getValue() {
        return value;
    }

    // 若无需sumValues,删除该方法
    /*
    public int getSumValues() {
        return sumValues;
    }
    */

    public void reset() {
        value = 0;
        // 若保留sumValues,需添加重置逻辑
        // sumValues = 0;
        // 删除对冗余变量total的重置
        // total = 0;
    }
}

额外说明

如果业务需求不需要记录单个骰子的历史累加点数,建议直接删除sumValues相关的所有代码,既简化逻辑又避免错误。若确实需要保留累加功能,务必在reset()方法中重置sumValues,同时确保显示当前点数时调用getValue()而非getSumValues()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 14:46:02