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

4.24 Java实验作业:求解三个整数的最大绝对值数(程序报错求助)

解决Java程序输出最大绝对值数的错误问题

嘿,我来帮你搞定这个问题!你的代码里有两个关键错误导致结果不对,咱们一步步拆解:

错误分析

  1. 多余的分号破坏了条件逻辑
    你第三个else if语句后面多写了一个分号;:

    } else if ( z > x && z > y) ; {
    

    这个分号会让else if的条件判断变成一个空语句,后面的{ System.out.print(Math.abs(z)); }会无条件执行,不管z是不是真的最大,这直接覆盖了前面的判断结果——比如输入10 -30 29时,前面的条件都不满足,就会直接输出z的绝对值29,而不是正确的30。

  2. 判断逻辑方向错误
    你的代码是先比较原数的大小,再取绝对值,但我们需要的是绝对值最大的数,不是原数最大的数。比如输入-30时,它的原数比10和29都小,但绝对值是最大的,你的代码里y > x && y > z这个条件永远不会成立(因为-30<10),所以根本不会走到输出y的绝对值的分支,这就完全偏离了需求。

修正后的代码方案

方案1:修正if-else逻辑(清晰易懂)

import java.util.Scanner;
public class LabProgram {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int x = in.nextInt();
        int y = in.nextInt();
        int z = in.nextInt();
        
        // 先计算每个数的绝对值,方便后续比较
        int absX = Math.abs(x);
        int absY = Math.abs(y);
        int absZ = Math.abs(z);
        
        // 比较绝对值的大小,找出最大的那个
        if (absX >= absY && absX >= absZ) {
            System.out.println(absX);
        } else if (absY >= absX && absY >= absZ) {
            System.out.println(absY);
        } else {
            System.out.println(absZ);
        }
    }
}

方案2:用Math.max简化代码(更简洁)

如果不想写繁琐的if-else,可以直接用Math.max嵌套来找出最大的绝对值:

import java.util.Scanner;
public class LabProgram {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int x = in.nextInt();
        int y = in.nextInt();
        int z = in.nextInt();
        
        // 先两两比较绝对值,最终得到最大的那个
        int maxAbsValue = Math.max(Math.abs(x), Math.max(Math.abs(y), Math.abs(z)));
        System.out.println(maxAbsValue);
    }
}

验证示例

输入10 -30 29时,两个方案都会输出30,完全符合需求。

内容的提问来源于stack exchange,提问作者Erick Guerrero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:07:46