小编典典

Java String完成数学求和

java

在Java中,我目前正在尝试寻找一种方法来进行数学求和,方法是在JTextField中输入文本,将其放入String,然后将其转换为int并求解。但是问题是,我不想简单地在字符串中输入
数字 ,而是实际的 总和, 包括加法,减法等。

目前,它只接受做类似的事情,1将从字符串转换为int,但是当我执行‘1 + 1’甚至只是‘1+’时,它到处都会引发异常,因为’+’不是数字。
我已经知道这不会起作用,因为int仅允许数字。

有什么方法可以安全地在文本字段中键入一个完整的总和,然后以某种方式将其转换为int吗?就像输入7-2 * 5,然后将答案保存在int一样?

谢谢。


阅读 642

收藏
2020-11-30

共1个答案

小编典典

您可以使用JavaScript引擎:

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String expression = textField.getText();
System.out.println(engine.eval(expression));

编辑以允许所有方程式:

您现在所要做的就是允许 犯罪,cos,棕褐色 这样的事情:

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String expression = textField.getText();

// Between here...
        expression = expression.
                replace("sin", "Math.sin").
                replace("cos", "Math.cos").
                replace("tan", "Math.tan").
                replace("sqrt", "Math.sqrt").
                replace("log", "Math.log").
                replace("pi", "Math.PI");
// And so on...

System.out.println(engine.eval(foo));

因此,您可以执行以下操作:

5 + 5 - 2 / 5 + sin(55) - log(20)

任何你想要的。

2020-11-30