0

オブジェクトから変換された 2 つのオペランドと 1 つのオペランドを含む次のコードがあります。最終的な答えを得るために、それらを式にマージしたいと思います。たとえば、このメソッドは 2,3,* を受け取り、それを 2*3 に変換して 6 を返します。多くの if と else if を使用せずにこれを解決する簡単な方法はありますか?等々。

private long calculateExpression(Object op1, Object op2, Object op){
    long operand1 = Long.parseLong(String.valueOf(op1));
    long operand2 = Long.parseLong(String.valueOf(op2));
    Operator operator = Operator.toOperator(String.valueOf(op));

    return answer;
}
4

3 に答える 3

2

jdk 6+を使用している場合は、次のようにスクリプトエンジンを使用できます

private long calculateExpression(Object op1, Object op2, Object op) throws ScriptException{
    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine engine = mgr.getEngineByName("JavaScript");
    String expression = "" + op1 + op + op2;
    Integer answer = (Integer) engine.eval(expression);
    return answer.longValue();
}
于 2014-04-29T13:57:36.673 に答える