尝试获取函数作为用户输入但不起作用,不接受字符串到双精度



我需要帮助来获取用户的输入,这是一个像 2*x 或 2/x 等函数......我最初尝试通过从用户那里获取一个字符串值然后将其转换为双精度值来尝试这样做,但由于某种原因,Java 不喜欢这样。我在错误中检查了第 56 行,这是我将字符串转换为双精度时。

System.out.println("What is the formula?");
    formula = keyboard.nextLine();
double newFormula = Double.valueOf(formula);
Exception in thread "main" java.lang.NumberFormatException: For input      string: "2*x"
at    sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at java.lang.Double.valueOf(Double.java:502)
at newpackage.CurveArea.main(CurveArea.java:56)

似乎您尝试将字符串转换为双精度,但它不是双精度,因为它包含非数字字符。要从输入字符串中获取 2,您可以尝试这样的事情。

    String formula = "2/x";
    double newFormula = 0d;
    for (String mathSign : new String[] { "/", "*" }) {
        if (formula.contains(mathSign)) {
            newFormula = Double.valueOf(formula.substring(0, formula.indexOf(mathSign)));
        }
    }
    System.out.println(newFormula);

在 if 语句中也可以检测到数学符号。

最新更新