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

Java调用choosePlanet方法返回值始终相同,如何正确获取方法返回值

问题根源

  • 核心问题:for循环匹配到符合条件的行星后没有终止循环,后续遍历会持续覆盖变量a的取值,最终a一定会等于Planet枚举的最后一个元素,所以只要存在匹配结果,每次返回值都是同一个。
  • 变量名问题:方法形参定义为Scanner scan,但代码中读取输入调用的是scanner.next(),如果外部的scanner变量和形参不是同一个对象,还会出现输入读取异常。
  • 逻辑漏洞:如果输入关键词匹配到多个行星,当前逻辑只会返回最后一个匹配的行星,不符合正常选择逻辑。

修复代码

private static Planet choosePlanet(Scanner scan) {
    System.out.println("Voici les planetes Disponible : " + Arrays.toString(Planet.values()));
    List<Planet> PlanetValues = Arrays.asList(Planet.values());
    boolean exist = false;
    Planet a = null;
    do {
        System.out.println("Choisis une planet");
        // 改用方法传入的scan参数读取输入,修复变量名错误
        String choix = scan.next();
        for (int i = 0; i < PlanetValues.size(); i++) {
            a = PlanetValues.get(i);
            if (a.toString().matches("(?i).*" + choix + ".*")) {
                exist = true;
                System.out.println(a.getCommonName());
                // 匹配到后直接跳出for循环,避免a被后续遍历的元素覆盖
                break;
            }
        }
    } while (!exist);
    return a;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:45:04