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

嵌套for循环中字符串条件if else语句的输出异常问题排查

问题分析

你当前的问题出在嵌套循环的逻辑错误:每处理一个问题的输入后,代码会遍历整个答案数组,每一次循环都输出一次"Correct!"或"Wrong!"。所以哪怕输入匹配到了正确答案,后续的循环仍会继续执行,输出多余的"Wrong!";如果没匹配到,就会输出和答案数组长度相同次数的"Wrong!"。

解决方案

根据你的期望输出,分两种常见场景给出修正代码:

场景1:问题与答案一一对应

如果questions[i]的正确答案就是answers[i](数组索引一一对应),完全不需要嵌套循环,直接对比当前问题对应的答案即可:

Scanner scanner = new Scanner(System.in);
String input = null;

for (int i = 0; i < questions.length; i++) {
    System.out.println(questions[i]);
    input = scanner.next();

    // 直接对比当前问题对应的答案
    if (input.toLowerCase().equals(answers[i])) {
        System.out.println("Correct!");
    } else {
        System.out.println("Wrong!");
    }
}

场景2:单个问题有多个正确答案

如果一个问题对应多个正确答案(比如answers数组是当前问题的所有正确选项),需要遍历答案数组找到匹配项,标记状态后只输出一次结果:

Scanner scanner = new Scanner(System.in);
String input = null;

for (int i = 0; i < questions.length; i++) {
    System.out.println(questions[i]);
    input = scanner.next();
    boolean isCorrect = false;

    // 遍历答案数组,找到匹配项后立即终止循环
    for (int j = 0; j < answers.length; j++) {
        if (input.toLowerCase().equals(answers[j])) {
            isCorrect = true;
            break;
        }
    }

    // 遍历结束后统一输出结果
    System.out.println(isCorrect ? "Correct!" : "Wrong!");
}
补充优化建议

后续提升代码可读性时,可以把问题和答案封装成一个独立类(比如TriviaItem),或者将输入读取、答案判断拆分为单独的方法,让代码结构更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:17:12