是否可以将1 + 2等字符串转换为等于3的整数?
我知道我可以使用valueOf()来获取单个数字的值
String test1 = "1";
String test2 = "2";
int test3 = Integer.valueOf(test1);
int test4 = Integer.valueOf(test2);
int answer = test3 + test4;
System.out.println(answer);
但是可以一步将“1 + 2”转换为3而不是两步吗?
答案 0 :(得分:4)
Java随Rhino打包。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class RhinoExample {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine rhino = manager.getEngineByName("JavaScript");
Double result = (Double) rhino.eval("1 + 2");
Integer i = result.intValue();
System.out.println(i);
}
}
答案 1 :(得分:2)
你可以使用javax.script.ScriptEngineManager和javax.script.ScriptEngine;查看此帖子Evaluating a math expression given in string form
答案 2 :(得分:0)
标准java库不允许您这样做。但是,正如Jeff Storey回答here你可能会尝试这样:
ScriptEngineManager mg= new ScriptEngineManager();
ScriptEngine engine = mg.getEngineByName("js");
Object result = engine.eval("1+2");
但是,如果您不想使用上述方法,那么您可以做的最好:
String test1 = "1";
String test2 = "2";
System.out.println((Integer.valueOf(test1)+Integer.valueOf(test2)));
答案 3 :(得分:0)
public void printStringSum(String s1, String s2) {
int i1 = Integer.valueOf(s1);
int i2 = Integer.valueOf(s2);
val = i1 + i2;
System.out.println(val);
}
现在代码中您想要执行原始代码中发布的内容,只需调用此方法:
printStringSum("1", "2");
但是,您可以通过使该方法期望一个字符串数组来进一步改进。在方法体内,遍历字符串,取值并+=
- 将其设为val
,然后在末尾打印val
。
答案 4 :(得分:0)
除非出于内存原因需要,否则Id会坚持使用它的方式,出于调试原因,特别是如果test1和test2最终是某种用户输入。
String test1 = "1";
String test2 = "2";
System.out.println((Integer.valueOf(test1)+Integer.valueOf(test2)));
这也适用
String test1 = "1";
String test2 = "2";
int answer = (Integer.valueOf(test1)+Integer.valueOf(test2));
System.out.println(answer);
如果真的需要限制行数,你可以确保test1和test2将是“1”和“2”然后只使用:
System.out.println((Integer.valueOf("1")+Integer.valueOf("2")));