Java String完成数学求和

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

数字 ,而是实际的 总和, 包括加法,减法等。

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

我已经知道这不会起作用,因为int仅允许数字。

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

谢谢。

回答:

您可以使用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)

任何你想要的。

以上是 Java String完成数学求和 的全部内容, 来源链接: utcz.com/qa/412021.html

回到顶部