Java嵌套if-else语句执行逻辑不符合预期问题排查
面试流程程序问题修复
问题现象
程序在输入PASS、CLEARED时流程符合预期,但如果在某一轮面试中输入非CLEARED值(比如NO),执行完「遗憾提示」后,仍会继续弹出后续面试的提问,不符合「执行else后直接退出流程」的需求。
问题根源
当前代码中,每一轮面试的判断都是独立的if-else语句,彼此没有嵌套关联。即使某一轮面试未通过,后续的代码依然会按顺序执行,因为它们不在前一个else的分支范围内,也没有中断流程的逻辑。
修复方案
把每一轮面试的流程嵌套在前一轮通过的分支里,这样只有通过上一轮,才会触发下一轮的提问;一旦某一轮未通过,直接执行else的提示后就会跳出整个嵌套流程,不会再执行后续步骤。
修正后的代码
package controlStatements; import java.util.Scanner; class nested_if_else_Statement { static public void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Online Assesment, enter PASS or FAIL?"); String oa = scan.nextLine(); if (oa.equals("PASS")) { System.out.println("Please wait in the office lobby for further levels of interview."); System.out.println("Have you CLEARED first level of interview?"); String level1 = scan.nextLine(); if(level1.equals("CLEARED")) { System.out.println("Please wait for second level of interview."); System.out.println("Have you CLEARED second level of interview?"); String level2 = scan.nextLine(); if(level2.equals("CLEARED")) { System.out.println("Please wait for third level of interview."); System.out.println("Have you CLEARED third level of interview?"); String level3 = scan.nextLine(); if(level3.equals("CLEARED")) { System.out.println("Please wait for fourth level of interview."); System.out.println("Have you CLEARED fourth level of interview?"); String level4 = scan.nextLine(); if(level4.equals("CLEARED")) { System.out.println("Kindly wait for final level of HR Interview."); System.out.println("Thank you for your patience."); System.out.println("Have you DONE with your HR Interview?"); String levelHR = scan.nextLine(); if(levelHR.equals("DONE")) { System.out.println("Please wait in the office lobby, will get back shortly."); } }else { System.out.println("We're sorry, better luck next time."); } }else { System.out.println("We're sorry, better luck next time."); } }else { System.out.println("We're sorry, better luck next time."); } }else { System.out.println("We're Sorry, better luck next time."); } } else { System.out.println("We're Sorry, better luck next time"); } scan.close(); } }
补充说明
也可以在每个else分支里添加return;语句直接终止main方法,但嵌套结构更贴合面试流程的递进逻辑,代码可读性更强。
内容的提问来源于stack exchange,提问作者Murali7373
相关产品推荐
相关产品推荐

