如何不破坏现有代码修复Java错误「此方法必须返回int类型结果」
错误根源
编译报错的核心原因是x == y的分支缺少返回值:该分支仅执行了打印操作,没有返回int类型结果,编译器检测到该分支无返回语句,因此抛出「此方法必须返回int类型结果」的错误。当前代码的分支逻辑已经覆盖了所有x、y的比较场景,不需要额外添加多余的return 0,也不用调整分支结构,只要补全漏写的返回语句即可。
修复代码
根据作业要求,两个参数差值在1以内时返回较小的数,x和y相等时二者数值完全相同,直接返回任意一个即可,修复后代码如下:
public static int balance (int x, int y) { if(x == y) { System.out.println("The values X and Y (" + x + " and " + y + ") are already balanced; They are equal to each other!"); return x; // 补全该分支的返回语句,x、y相等时返回任意一个都符合要求 } else if(Math.abs(x-y) == 1) { // 校验两个数的差值是否为1,Math.abs屏蔽正负差异 if(x > y) { return y; } else return x; } else if(x > y) { x = x - 1; // x更大,做减1操作 y = y + 1; // y更小,做加1操作 return balance(x,y); // 递归调用 } else if(x < y) { y = y - 1; // y更大,做减1操作 x = x + 1; // x更小,做加1操作 return balance(x,y); // 递归调用 } }
修复说明
- 补全
x==y分支的返回语句后,所有逻辑分支都有明确的int类型返回值,编译错误直接消除 - 没有新增多余的输出语句,也不会出现异常返回0的情况,完全符合作业逻辑要求
内容的提问来源于stack exchange,提问作者StockAZ89
相关产品推荐
相关产品推荐

