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
相关产品推荐
相关产品推荐

