Java程序未执行if-else if语句?新手技术求助
问题分析与修复方案
嘿,我一眼就瞅出问题出在哪了——你的else if分支里的条件逻辑写反啦!
咱们先看你这段有问题的代码:
else if((month == 2) && (day < 1 && day > 28)) { System.out.println("Invalid day!"); }
这里的day < 1 && day > 28是个永远不可能成立的条件,因为一个数字根本没法同时小于1又大于28啊!这就导致当你输入2月30号的时候,这个分支永远不会被触发,程序自然就没反应了。
修复方法
把条件里的&&改成||就搞定了,正确的逻辑应该是“日期小于1 或者 日期大于28”:
if((month == 2) && day >= 1 && day <= 28) { System.out.println(month + "/" + day + " is in the Winter season."); } else if((month == 2) && (day < 1 || day > 28)) { System.out.println("Invalid day!"); }
额外优化建议
为了让代码更简洁易读,你还可以把重复的month == 2判断提取出来,用嵌套if的方式:
if (month == 2) { if (day >= 1 && day <= 28) { System.out.println(month + "/" + day + " is in the Winter season."); } else { System.out.println("Invalid day!"); } }
这样就不用重复写两次month == 2,逻辑也更清晰,以后维护起来也方便~
内容的提问来源于stack exchange,提问作者BeeliBala
相关产品推荐
相关产品推荐

