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

Java方法调用故障排查:调用findLow方法时出错,无法定位问题

分析并修复你的findLow方法问题

嘿,我看了你的代码,不管是findLow方法本身还是逻辑设计,确实存在几个关键问题,导致它没法正常工作。咱们一步步拆解:

代码里的核心问题

  • 变量初始化位置错误:你把lowest和index放在了外层循环的内部,每次循环i的时候都会重置这两个变量,根本没法持续追踪整个数组里的最小值。
  • 缺失最小值比较逻辑:你只获取了current分数,但完全没有把它和当前记录的最小值做对比,也没有更新最小值的逻辑,等于白拿了这个值。
  • 方法没有返回值:方法声明是public static int findLow(...),要求返回int类型,但你的代码里没有任何return语句,这会直接导致编译错误。
  • 遍历对象错误(你标注的问题位置):你在注释标注的那一行用了hurlerArray[i].totalPoints(),但内层循环的变量是j,这意味着每次内层循环都在重复获取第i个选手的分数,完全没有遍历整个数组的其他选手,应该改成hurlerArray[j].totalPoints()。
  • 未使用的变量:current变量被赋值了但没用到,这会触发编译警告,也说明逻辑没走通。

修复后的完整代码

import java.util.Scanner;

public class HurlerUse {
    static Hurler[] hurlerArray;

    // 查找最低分的静态方法(已修复)
    public static int findLow(Hurler[] hurlerArray) {
        // 先处理空数组的边界情况,避免空指针异常
        if (hurlerArray == null || hurlerArray.length == 0) {
            throw new IllegalArgumentException("选手数组不能为空或长度为0");
        }

        // 初始化最小值为第一个选手的分数,对应索引为0
        int lowest = hurlerArray[0].totalPoints();
        int index = 0;

        // 从第二个元素开始遍历比较
        for (int j = 1; j < hurlerArray.length; j++) {
            int current = hurlerArray[j].totalPoints();
            // 如果当前分数比记录的最小值小,更新最小值和对应索引
            if (current < lowest) {
                lowest = current;
                index = j;
            }
        }

        // 这里返回的是最低分选手的索引,如果需要返回分数本身,直接return lowest即可
        return index;
    }
}

关于totalPoints()的额外检查

你怀疑这个方法可能有问题的话,可以单独测试它:创建一个Hurler对象,手动设置分数属性,调用totalPoints()看返回值是否符合你的预期。如果这个方法的计算逻辑有误,那findLow拿到的结果也会不准确。

内容的提问来源于stack exchange,提问作者Aoife Ellen Ryan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:33:34