【问题标题】:string calculation with an exponent带指数的字符串计算
【发布时间】:2017-11-01 03:28:01
【问题描述】:

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

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

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

我已经可以计算一个没有指数的方程,只是指数部分有问题。使用图形用户界面

编辑:我知道 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();
                }

            }

【问题讨论】:

  • 试试Math.pow(6.23, 4.2)
  • 我知道 math.pow,但是我如何从字符串中提取 6.23 和 4.2,计算它们的指数,然后将其重新插入到字符串中以作为完整方程计算?
  • 那么您应该提供您尝试过的内容。在您的问题中,您说没有指数就没有问题。
  • @ShanSolo 你如何提取其他的?同样。
  • 这是作业吗?

标签: java calculator


【解决方案1】:

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

编辑

这里的运算符^XOR布尔运算,这就是您的输出可能出错的原因。因此,您必须解析 String 并在最后的 String 中将 (6.23^4.2) 部分替换为 Math.pow(6.23, 4.2)

【讨论】:

  • 添加了附加信息
  • 你是如何提取其他的?同样。
  • @ShanSolo 更新了答案。
  • 好像这样可以,试试看。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 2021-01-24
相关资源
最近更新 更多