将字符串“1 + 2”转换为整数

时间:2013-11-18 18:51:58

标签: java string int

是否可以将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而不是两步吗?

5 个答案:

答案 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")));