如何创建游戏最低分追踪器?Java游戏最低分判定异常怎么修复
问题成因
- 核心问题是
lowestScore变量的作用域设置错误:你将该变量定义在了每次对局结算的方法内部,导致每局结算时都会重新初始化该变量,上一局更新的最低分无法保留到下一局的判断逻辑中,也就出现了第二次得分比第一次高还会触发新最低分提示的问题。 - 初始值设置错误:你贴出的代码中
lowestScore初始值设为0完全不符合需求,游戏得分范围是0~80,初始值设为0会导致除了0分之外的所有得分都不会触发新最低分判断,和你给出的测试现象不符,推测你实际运行的代码初始值设置为了大于80的数值,这个问题也需要一并修正。
修复方案
修复逻辑
- 将
lowestScore的定义移到对局结算方法外部,作为类成员变量,保证多局之间的数值可以持久化保存,不会每局重置。 - 把
lowestScore初始值设为81,匹配0~80的得分范围,保证首次对局的有效得分一定可以正确触发新最低分判断。 - 优化输出逻辑,把公共的得分输出部分合并,避免重复代码,降低后续维护出错概率。
修复后代码
// 定义为类成员变量,不要放在结算方法内部 int lowestScore = 81; // 每次对局结算的逻辑 public void settleScore(int currentScore) { boolean isNewLow = currentScore < lowestScore; if (isNewLow) { lowestScore = currentScore; } // 统一输出逻辑 System.out.println("Score = " + currentScore + (isNewLow ? " NEW LOW SCORE!" : "")); System.out.println("Lowest Score = " + lowestScore); }
内容的提问来源于stack exchange,提问作者Jene
相关产品推荐
相关产品推荐

