如果你想从头开始做所有事情,你需要想出一个方程解析器。
从那里你使用一个 Enum :
enum Operation{ADD, SUBTRACT;
public int evaluate(int operand1, int operand2) throws IllegalOperationException {
switch(this) {
case ADD: return operand1 + operand2;
case SUBTRACT: return operand1 - operand2;
default:
break;
}
throw new IllegalOperationException();
}
public static Operation getOperator(String operator) throws IllegalOperationException{
for(Operation o: Operation.values()){
if(o.toString().equals(operator)){
return o;
}
}
throw new IllegalOperationException();
}
};
因此,使用堆栈/队列解析您的方程,然后为每个运算符(操作)基本上执行以下操作:
Operation.getOperator(op).evaluate(r1, r2);
或者
将 x 和 y 替换为 x[i] 和 y[i] 并将其传递constructed string
给内置的 javascript 引擎,以防您使用 jdk1.6 或更高版本。
ScriptEngineManager sm = new ScriptEngineManager();
ScriptEngine en = sm.getEngineByName("JavaScript");
String expression = //your expression with values;
System.out.println(engine.eval(expression));