You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:20:24