在Java中如何在运行时传递算术运算符?

在Java中如何在运行时传递算术运算符?,java,Java,我想在运行时确定算术运算符并计算操作数的结果。有没有办法做到这一点 public static void main(String[] args) { String operator = args[0]; int num1 = 10; int num2 = 20; int result = num1 operator num2; System.out.println(result); } 如果您使用的是JDK1.6或更高版本,那么可以像这样使用内置的Javascript引擎 publi

我想在运行时确定算术运算符并计算操作数的结果。有没有办法做到这一点

public static void main(String[] args) {

String operator = args[0];

int num1 = 10;
int num2 = 20;

int result = num1 operator num2;

System.out.println(result);

}

如果您使用的是JDK1.6或更高版本,那么可以像这样使用内置的
Javascript
引擎

public static void main(String[] args) throws Exception{
    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine engine = mgr.getEngineByName("JavaScript");
    String oper = args[0];
    int num1 = 10;
    int num2 = 20;
    String expr = num1 + oper + num2;
    System.out.println(engine.eval(expr));
}

警告:从中可以看出,使用它可能不是最好的主意。但这最符合您问题的要求,因此也是答案。

您可以将其作为
字符串或
字符读入,然后使用if语句执行操作,如下所示:

public static void main(String... args) {
    String operator = args[0];

    int num1 = 10;
    int num2 = 20;

    int result = 0;

    if(operator.trim().equals("+")) {
        result = num1 + num2;
    } else if(operator.trim().equals("-")) {
        result = num1 - num2;
    } else if(operator.trim().equals("*")) {
        result = num1 * num2;
    } else if(operator.trim().equals("/")) {
        result = num1 / num2;
    }
    // More operations here...

    System.out.println(num1 + operator + num2 + "=" + result);
}

但是,为了精确起见,我建议在
int
上使用
double
数据类型。但此时您需要使用编译的字节码。是的,这是可行的,但它提到了eval可能永远不应该被使用。OP希望在运行时使用操作符。@Quilliom-您能和我分享一个链接,说明为什么不应该使用它吗?我想在警告的同时添加一个适当的引用。@R.J从纯Java的角度来看,包含解释语句是完全不合适的,但我喜欢这样一个问题,它的作用是合理的。除此之外,我真的很喜欢这个答案。+1表示完全不可想象的方法!