嵌套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
相关产品推荐
相关产品推荐

