Попытка получить функцию в качестве пользовательского ввода, но не работает, не принимает String to Double - PullRequest
0 голосов
/ 21 июня 2019

Мне нужна помощь с получением пользовательского ввода, который представляет собой функцию, подобную 2 * x или 2 / x и т. Д. ... Сначала я попробовал это, получив значение String от пользователя, а затем преобразовав его в double, но Java этого не делает.по какой-то причине.Я проверил строку 56 в ошибке, и это когда я конвертирую String в double.

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)

1 Ответ

0 голосов
/ 21 июня 2019

Кажется, что вы пытаетесь привести String к Double, но это не Double, потому что он содержит не числовые символы.Для получения 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 также может быть обнаружен mathSign.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...