Java中如何用if语句实现三个数的最值与相等判断?
用if语句找出三个数的最值与相等情况的正确实现
原代码存在的问题
- 输入验证逻辑不全:仅校验
num1和num2是否为正数,漏掉了num3的合法性检查 - 逻辑分支覆盖缺失:未处理三个数完全相等的场景,部分最值判断后未覆盖最小值的所有可能
- 语法错误:
do-while循环缺少闭合的},最后一个if语句的括号位置错误,导致代码无法编译
修正后的完整代码
import java.util.Scanner; public class NumberAnalyzer { public static void main(String[] args) { long num1, num2, num3; boolean inputError; Scanner sc = new Scanner(System.in); // 输入循环:确保三个数均为正数 do { inputError = false; // 提示用户输入三个数 System.out.print("请输入第一个数:"); num1 = sc.nextLong(); System.out.print("请输入第二个数:"); num2 = sc.nextLong(); System.out.print("请输入第三个数:"); num3 = sc.nextLong(); // 校验所有输入是否为正数 if (num1 <= 0 || num2 <= 0 || num3 <= 0) { System.out.println("输入错误,请输入大于0的数,重新输入!"); inputError = true; } } while (inputError); // 判断三个数的相等情况、最大值和最小值 // 场景1:三个数完全相等 if (num1 == num2 && num2 == num3) { System.out.println("三个数完全相等:" + num1); System.out.println("最大值:" + num1); System.out.println("最小值:" + num1); } // 场景2:num1与num2相等,与num3不同 else if (num1 == num2) { System.out.println(num1 + " 和 " + num2 + " 相等"); if (num1 > num3) { System.out.println("最大值:" + num1); System.out.println("最小值:" + num3); } else { System.out.println("最大值:" + num3); System.out.println("最小值:" + num1); } } // 场景3:num1与num3相等,与num2不同 else if (num1 == num3) { System.out.println(num1 + " 和 " + num3 + " 相等"); if (num1 > num2) { System.out.println("最大值:" + num1); System.out.println("最小值:" + num2); } else { System.out.println("最大值:" + num2); System.out.println("最小值:" + num1); } } // 场景4:num2与num3相等,与num1不同 else if (num2 == num3) { System.out.println(num2 + " 和 " + num3 + " 相等"); if (num2 > num1) { System.out.println("最大值:" + num2); System.out.println("最小值:" + num1); } else { System.out.println("最大值:" + num1); System.out.println("最小值:" + num2); } } // 场景5:三个数均不相等 else { // 用嵌套if找出最大值 long max; if (num1 > num2) { max = num1 > num3 ? num1 : num3; } else { max = num2 > num3 ? num2 : num3; } // 用嵌套if找出最小值 long min; if (num1 < num2) { min = num1 < num3 ? num1 : num3; } else { min = num2 < num3 ? num2 : num3; } System.out.println("最大值:" + max); System.out.println("最小值:" + min); } sc.close(); } }
代码核心说明
- 输入验证:通过
do-while循环强制用户输入合法的正数,避免无效数据干扰后续判断 - 分支逻辑:按「全相等→两两相等→全不相等」的顺序判断,确保所有场景都被覆盖
- 最值计算:全不相等场景下,用嵌套
if(或三元运算符,本质为if逻辑)实现最值查找,符合题目要求的if语句使用规则
内容的提问来源于stack exchange,提问作者Super Coder
相关产品推荐
相关产品推荐

