题目描述
给定一个字符串形式的计算表达式,其中只包含数字和加+、减-、乘*、除/四种运算符,乘除计算优先级高于加减。
请对该计算表达式求值,并返回计算结果。如果在计算过程中遇到除零,则返回字符串error。
解答要求
时间限制: 1000ms, 内存限制: 64MB
输入输出
输入
一个字符串形式的计算表达式,长度范围:[1,100]
用例保证,输入数字和中间及最终计算结果的值都是整数,且在int型范围内。
输出
一个10进制整数; 或字符串error
样例
输入样例1
1+2*3-100/2
输出样例1
-43
输入样例2
3/0
输出样例2
error
代码
package com.atguigu.huawei;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
//这道题AC
public class Main3331
{
public static void main(String[] args) {
Scanner cin = new Scanner(System.in, StandardCharsets.UTF_8.name());
String expression = cin.nextLine();
cin.close();
String result = calculate(expression);
if(result.equals("Infinity")){
System.out.println("error");
}else {
System.out.println(result);
}
}
// 待实现函数,在此函数中填入答题代码
private static String calculate(String expression) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
try {
Object result = engine.eval(expression);
return String.valueOf(result);
} catch (ScriptException e) {
return "error";
}
}
}
package com.atguigu<