带有指数

时间:2017-11-01 03:28:01

标签: java calculator

我正在制作一个计算器,我正试图弄清楚当方程已经在一个字符串中时如何转换方程式的指数。例如,如果用户输入

2 + 3 *(4/2)+ 6.23 ^ 4.2 + 32

作为一个字符串,我将如何计算6.23 ^ 4.2以及其余的等式。

我已经可以计算出一个没有指数的方程式,只是指出了指数部分的问题。使用GUI

编辑:我知道math.pow,但我如何从字符串中提取6.23和4.2,计算它们的指数,然后将其重新插入字符串?

这就是我目前在没有指数的情况下计算方程式的方法:

            ScriptEngineManager mgr = new ScriptEngineManager();
            ScriptEngine engine = mgr.getEngineByName("JavaScript");
            String infix = textField.getText();
            if (countR != countL || op == false) {
                textField.setText("ERROR");

            } else {
                try {
                    Object obj = engine.eval(infix);
                    textField.setText(obj.toString());
                } catch (ScriptException e1) {
                    // TODO Auto-generated catch block
                    textField.setText("ERROR");
                    e1.printStackTrace();
                }

            }

1 个答案:

答案 0 :(得分:2)

您可以拆分两个double数字(6.23^4.2)并使用Math.pow(6.23, 4.2)进行计算。

<强> 修改

这里运算符^XOR布尔运算,这就是输出可能出错的原因。因此,您必须解析String并在最终(6.23^4.2)

中将Math.pow(6.23, 4.2)部分替换为String