Java中基于运算符变量手动实现两整数数学运算的方法
解决思路:通过条件判断匹配运算符执行对应运算
你遇到的问题核心是char类型的运算符会被自动转换为ASCII值参与运算,所以不能直接拼接表达式。正确的做法是先判断op的具体字符值,再执行对应的数学运算,下面给你两种常用的实现方式:
方式一:使用switch-case语句(Java 7及以上支持)
这是最清晰直观的方式,适合处理有限的运算符场景:
int int1 = 10; int int2 = 5; char op = '+'; int res; switch(op) { case '+': res = int1 + int2; break; case '-': res = int1 - int2; break; case '*': res = int1 * int2; break; case '/': // 注意:这里要处理除数为0的情况 if(int2 == 0) { throw new ArithmeticException("除数不能为0"); } res = int1 / int2; break; default: // 处理非法运算符的情况 throw new IllegalArgumentException("不支持的运算符:" + op); } System.out.println("运算结果:" + res);
方式二:使用if-else条件链
如果你的Java版本较低(不支持char的switch),或者需要更灵活的判断,可以用if-else链:
int int1 = 10; int int2 = 5; char op = '-'; int res; if(op == '+') { res = int1 + int2; } else if(op == '-') { res = int1 - int2; } else if(op == '*') { res = int1 * int2; } else if(op == '/') { if(int2 == 0) { throw new ArithmeticException("除数不能为0"); } res = int1 / int2; } else { throw new IllegalArgumentException("不支持的运算符:" + op); } System.out.println("运算结果:" + res);
关键说明
- 一定要处理非法运算符的情况,避免程序出现未知错误
- 除法运算必须额外判断除数是否为0,否则会抛出
ArithmeticException - 之所以不能直接写
int res = int1 + op + int2,是因为op作为char类型会被自动转换为对应的ASCII值(比如'+'的ASCII是43),最终计算的是int1 + 43 + int2,完全不是你想要的加法运算
内容的提问来源于stack exchange,提问作者user8887707
相关产品推荐
相关产品推荐

