在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表示完全不可想象的方法!