Java中if/else语句异常:else分支未按预期执行求助
问题解决:else分支未触发的原因与修复
你的代码里else分支不执行的核心问题是逻辑运算符用错了:
原代码判断杯子数量有效时用了||(逻辑或):
if (numberCups >= 1 || numberCups <= 100) { System.out.println("The number of cups is valid."); } else if (numberCups <= 1 || numberCups >= 100) { System.out.println("The number you have entered is invalid. Please try again."); }
||表示只要满足其中一个条件就成立,而任何整数都会满足numberCups <=100或者numberCups >=1(比如输入0时,0<=100是true,所以整个if条件成立,直接走正常分支,永远不会进入else)。
正确的逻辑应该是同时满足1<=数量<=100,要用&&(逻辑与),而且else分支不需要重复判断条件,直接用else即可:
修正后的关键代码片段
// 杯子数量判断 System.out.println("Please enter the number of cups of " + nameOfIngredient + " we'll need. The number of cups must be between 1 and 100: "); numberCups = scnr.nextInt(); if (numberCups >= 1 && numberCups <= 100) { System.out.println("The number of cups is valid."); } else { System.out.println("The number you have entered is invalid. Please try again."); } // 卡路里数量判断 System.out.println("Please enter the number of calories per cup: "); numberCaloriesPerCup = scnr.nextInt(); if (numberCaloriesPerCup >= 1 && numberCaloriesPerCup <= 1000) { System.out.println("The number of calories is valid."); } else { System.out.println("The number you have entered is invalid. Please try again."); }
额外说明
- 逻辑与
&&要求两个条件同时成立,才能进入if分支,这样输入0、101这类超出范围的值时,会正确进入else分支触发错误提示 - 原代码中else if的判断条件本身也是错误的,它其实就是if条件的反面,直接用else更简洁准确
内容的提问来源于stack exchange,提问作者Daniel Colbert
相关产品推荐
相关产品推荐

