Строка не может быть преобразована в двойную ошибку в функции - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь вывести NaN в строковом формате, когда x равно NaN. Однако консоль выдает ошибку String не может быть преобразована в двойную ошибку, когда я пытаюсь вернуть строку «NaN», когда Double.isNaN истинно. Я пробовал разобрать строку r как двойную, используя Double.parseDouble (), но безрезультатно.

Вот мой код:

public static double heaviside(double x) {
    String r = "NaN";
    r = Double.parseDouble(r);
    double result;
    if (Double.isNaN(x)) return r;
    else if (x < 0.0) return result = 0.0;
    else if (x == 0.0) return result = 0.5;
    else return result = 1.0;
}

Вывод в консоль

ActivationFunction. java: 6: ошибка: несовместимые типы: double не может быть преобразовано в String r = Double.parseDouble (r); ^ ActivationFunction. java: 8: ошибка: несовместимые типы: String не может быть преобразован в double if (Double.isNaN (x)) return r; ^

Ответы [ 3 ]

3 голосов
/ 27 мая 2020

Ваша проблема возникает из-за того, что вы пытаетесь присвоить double переменной String. r определяется как String and Double.parseDouble(r) возвращает double. Он будет работать, если вы вместо этого назначите его result, например: double result = Double.parseDouble(r);

Однако нет необходимости сначала анализировать новый double из String. Вы хотите вернуть NaN, когда x == NaN. В этом случае вы можете просто вернуть x, потому что, ну, x это NaN. Нет необходимости в другой переменной, синтаксическом анализе и всем остальном.

1 голос
/ 27 мая 2020

Вы пытаетесь преобразовать String в double и сохранить его значение в r, которое является типом String.

Вы должны создать другую переменную типа double и сохранить это значение в таком виде:

public static double heaviside(double x) {
    String r = "NaN";
    double d = Double.parseDouble(r);
    double result;
    if (Double.isNaN(x)) return d;
    else if (x < 0.0) return result = 0.0;
    else if (x == 0.0) return result = 0.5;
    else return result = 1.0;
}

Надеюсь, это вам поможет. Удачного кодирования ..!

0 голосов
/ 27 мая 2020

«NaN» не является двойным, вы не можете преобразовать его в double и не вернуть x, потому что Java возвращает исключение в строке 2 вашего кода и не продолжает выполнение остальной части кода

...