问题出在第二次输入逻辑中的 `cupLyoStuWeighingLiquidLog.setStuMaximumWeight(cupLyoStuWeighingLiquidLog.getStuMinimumWeight());` 这一行代码,当输入的值小于当前最小值时,不应该将当前最小值赋给最大值,而是应该保持最大值不变。以下是修正后的代码: ```java // 判断最大重量和最小重量是否都为 null if (cupLyoStuWeighingLiquidLog.getStuMaximumWeight() == null && cupLyoStuWeighingLiquidLog.getStuMinimumWeight() == null) { // 第一次输入,设置最大值 cupLyoStuWeighingLiquidLog.setStuMaximumWeight(modifiedString); } else { // 将最大重量转换为 double 类型 double stuMaximumWeightNum = Double.parseDouble(cupLyoStuWeighingLiquidLog.getStuMaximumWeight()); // 将最小重量转换为 double 类型,如果最小重量为 null 则设为 Double.MAX_VALUE double stuMinimumWeightNum = (cupLyoStuWeighingLiquidLog.getStuMinimumWeight() != null) ? Double.parseDouble(cupLyoStuWeighingLiquidLog.getStuMinimumWeight()) : Double.MAX_VALUE; // 如果输入值大于当前最大值 if (stuAnswersNum > stuMaximumWeightNum) { // 当前最大值变为最小值 cupLyoStuWeighingLiquidLog.setStuMinimumWeight(cupLyoStuWeighingLiquidLog.getStuMaximumWeight()); // 新输入值变为最大值 cupLyoStuWeighingLiquidLog.setStuMaximumWeight(modifiedString); } // 如果输入值小于当前最小值 else if (stuAnswersNum < stuMinimumWeightNum) { // 新输入值变为最小值 cupLyoStuWeighingLiquidLog.setStuMinimumWeight(modifiedString); } // 输入值介于最大值和最小值之间,保持不变 } ``` 额外需要注意的逻辑点 1. 在将字符串转换为 `double` 类型时,要确保字符串是有效的数字格式,否则会抛出 `NumberFormatException` 异常,可以添加异常处理代码来增强程序的健壮性。 2. 要注意 `Double.MAX_VALUE` 的使用,当最小重量初始为 `null` 时,使用 `Double.MAX_VALUE` 作为初始值,在后续逻辑中要确保这个初始值不会影响正常的比较逻辑。 3. 代码中 `modifiedString` 和 `stuAnswersNum` 要确保其来源和类型是正确的,`modifiedString` 应该是可以转换为 `double` 类型的字符串,`stuAnswersNum` 应该是正确的输入值。 [2025-07-30 16:59:32 | AI写代码神器 | 621点数解答]