如何编写Java函数,两变量运算等于第三变量时返回对应数学运算符
代码问题分析与修正方案
原代码存在的核心问题
- 方法定义不符合需求:需求要求实现接收三个int参数、返回String的
mathFunction函数,原代码将逻辑写在参数为String数组的main方法中,且声明的num1/num2/num3未赋值,无法通过编译。 - 判断逻辑错误:使用
else if分支判断,只要有一个运算符合条件就会跳过后续判断,无法返回多个符合要求的运算符。 - 缺少除法异常处理:未校验除数为0的情况,直接做除法会抛出
ArithmeticException运行时异常。 - 基础语法错误:存在
public static String.valueOf(nums)这类非法语法,最后输出语句缺少分号。
修正后完整代码
public class MathOperation { public static String mathFunction(int a, int b, int target) { StringBuilder result = new StringBuilder(); // 校验加法 if (a + b == target) { result.append("+"); } // 校验减法 if (a - b == target) { result.append("-"); } // 校验乘法 if (a * b == target) { result.append("*"); } // 校验除法,先处理除数为0的情况,当前默认仅匹配整数整除场景 if (b!= 0 && a % b == 0 && a / b == target) { result.append("/"); } // 无符合条件的运算符返回None return result.length() == 0? "None" : result.toString(); } public static void main(String[] args) { // 测试示例 System.out.println(mathFunction(4,2,6)); // 输出 + System.out.println(mathFunction(2,2,4)); // 输出 +* System.out.println(mathFunction(7,1,12)); // 输出 None } }
实现说明
- 用
StringBuilder拼接所有符合条件的运算符,满足多匹配场景的需求。 - 所有判断都用独立的
if而非else if,确保每一种运算都会被校验。 - 除法判断新增了
b!=0和a%b==0的校验,避免除数为0异常,同时保证仅整数整除的场景会匹配到除法运算符;如果需求允许非整除的整数除法(比如5/2=2匹配target=2),可以去掉a%b==0的判断条件。
内容的提问来源于stack exchange,提问作者Daniyella
相关产品推荐
相关产品推荐

