Java判断三个数值是否在10-20区间代码仅输出无符合结果问题排查
问题分析
存在三个核心及次要问题:
- 首要问题:变量
first、second、third未正确获取用户输入的数值。Java中int类型成员变量默认初始值为0,若未将用户输入内容赋值给三个变量直接参与判断,所有数值均不满足10~20的区间条件,全部if分支无法命中,最终只会执行else分支输出对应结果。 - 次要问题1:区间判断规则不匹配常规需求。现有判断逻辑
first >10 && first <20会排除10和20两个边界值,常规青少年年龄统计包含10到20的边界值,需要调整判断符号。 - 次要问题2:分支逻辑冗余度极高。3个变量需要编写7个if分支,可维护性极差,变量数量增加时代码量会指数级上升。
修复方案
基础修复(仅解决错误输出问题)
补充用户输入读取逻辑,将用户输入的三个整数正确赋值给first、second、third变量即可,原有分支逻辑可正常运行。如果不需要包含10和20的边界,无需修改原有判断条件。
优化修复(简化代码逻辑)
推荐采用先计数再输出的逻辑,大幅减少代码量,提升可维护性,完整可运行代码如下:
import java.util.Scanner; public class TeenagerStatistic { public static void main(String[] args) { Scanner inputScanner = new Scanner(System.in); // 读取用户输入的三个数值 System.out.print("输入第一个数值:"); int first = inputScanner.nextInt(); System.out.print("输入第二个数值:"); int second = inputScanner.nextInt(); System.out.print("输入第三个数值:"); int third = inputScanner.nextInt(); inputScanner.close(); int teenCount = 0; // 区间判断,包含10、20边界,若不需要边界可修改为>10和<20 if (first >= 10 && first <= 20) teenCount++; if (second >= 10 && second <= 20) teenCount++; if (third >= 10 && third <= 20) teenCount++; // 按计数输出结果 if (teenCount == 3) { System.out.println("All of them are teenagers"); } else if (teenCount == 2) { System.out.println("Two of them are teenagers"); } else if (teenCount == 1) { System.out.println("One of them is a teenager"); } else { System.out.println("None of them is a teenager"); } } }
内容的提问来源于stack exchange,提问作者KyawLinThant
相关产品推荐
相关产品推荐

