在Java中,我目前正在尝试寻找一种方法来进行数学求和,方法是在JTextField中输入文本,将其放入String,然后将其转换为int并求解。但是问题是,我不想简单地在字符串中输入 数字 ,而是实际的 总和, 包括加法,减法等。
目前,它只接受做类似的事情,1将从字符串转换为int,但是当我执行‘1 + 1’甚至只是‘1+’时,它到处都会引发异常,因为’+’不是数字。 我已经知道这不会起作用,因为int仅允许数字。
有什么方法可以安全地在文本字段中键入一个完整的总和,然后以某种方式将其转换为int吗?就像输入7-2 * 5,然后将答案保存在int一样?
谢谢。
您可以使用JavaScript引擎:
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)
任何你想要的。