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

Java简易计算器除零异常处理:条件判断逻辑错误排查

Java简易计算器异常处理问题分析与修复

你的问题出在错误地用全局if条件限制了所有运算的执行,具体来说:

你写的if(x != 0 && y != 0)要求x和y必须同时不为0,才会执行加减乘除逻辑。但实际上,只有除法运算(当f=4时)需要校验除数y是否为0,加减乘运算完全允许x或y为0(比如0+5、5-0、0*3都是合法且有正确结果的)。这个错误导致只要x或y任一为0,所有运算都会直接返回初始值0,而非正确结果。

修复方案1:在除法分支单独校验除数

直接在switch的case 4里处理除数为0的情况,不影响其他运算:

public static int result(int x, int y, int f) {
    int result = 0;
    result = switch (f) {
        case 1 -> x + y;
        case 2 -> x - y;
        case 3 -> x * y;
        case 4 -> {
            // 仅在除法时校验除数是否为0
            if (y == 0) {
                // 这里可以返回特定值,或者抛出异常提示非法操作
                yield 0;
                // 也可以抛出异常:throw new IllegalArgumentException("除数不能为0");
            }
            yield x / y;
        }
        default -> 0;
    };
    return result;
}

修复方案2:拆分逻辑,仅针对除法做判断

如果不想修改switch结构,可以单独把除法逻辑抽出来处理:

public static int result(int x, int y, int f) {
    int result = 0;
    if (f == 4) {
        // 只在除法时校验除数
        result = y != 0 ? x / y : 0;
    } else {
        // 其他运算正常执行,无需限制x/y是否为0
        result = switch (f) {
            case 1 -> x + y;
            case 2 -> x - y;
            case 3 -> x * y;
            default -> 0;
        };
    }
    return result;
}

这两种方案都能解决你的问题:既避免了除数为0的崩溃,又不会影响其他运算在x或y为0时的正常执行。

内容的提问来源于stack exchange,提问作者hasan muttaqin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:35:01