Java if-else逻辑异常 输入1-100范围外数值仍输出Excelent
代码问题排查与修正
问题定位
- 若运行时无论输入什么都输出
Excelent!,优先检查判断条件的逻辑运算符:如果误将&&写为||,会导致任意整数都满足「大于0 或 小于100」的条件,if分支永远为真,不会触发else的违规提示。 - 当前判断条件为
choosenNumber>0 && choosenNumber<100,对应开区间(0,100),和需求要求的**1-100闭区间(包含1和100)**不匹配:输入100时会被误判为违规,不符合预期。
修正后代码
import java.util.Scanner; public class numberOfChoice{ public static void main(String[] args) { int choosenNumber; Scanner input=new Scanner (System.in); System.out.println("Write your number in between 1 and 100"); choosenNumber=input.nextInt(); // 调整为闭区间判断,覆盖1到100的所有整数 if (choosenNumber >= 1 && choosenNumber <= 100) { System.out.println("Excelent!"); } else{ System.out.println("You have broken the rule"); } } }
修正后效果
- 输入1、99、100这类符合区间的数字,输出
Excelent! - 输入0、-1、101这类区间外的数字,输出
You have broken the rule
内容的提问来源于stack exchange,提问作者Sagi Rat
相关产品推荐
相关产品推荐

