字符串不能转换为函数中的双精度错误



当x是NaN时,我正在尝试以字符串格式输出NaN。但是,当我尝试返回"NaN"字符串时,当 Double.isNaN 为真时,控制台会抛出字符串无法转换为双精度错误。我尝试使用 Double.parseDouble(( 将字符串 r 解析为双精度,但无济于事。

这是我的代码:

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;
}

控制台输出

激活函数.java:6:错误:不兼容类型:双精度无法转换为字符串 r = Double.parseDouble(r(; ^ 激活功能.java:8:错误:不兼容的类型:字符串无法转换为双精度 if (Double.isNaN(x(( 返回 r; ^

你的问题来自这样一个事实,你试图将double分配给String变量。r定义为Stringand Double.parseDouble(r)返回double。如果您将其配置为result,它将起作用,如下所示:double result = Double.parseDouble(r);

但是,首先没有必要从String解析新double。您想在x == NaN时返回NaN。在这种情况下,您可以返回x,因为,好吧,xNaN。不需要另一个变量,解析等等。

您正在尝试将字符串转换为双精度并将其值存储在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;
}

我希望它能帮助你。 快乐编码..!

"NaN" 不是双精度,您不能将其转换为双精度而不返回x,因为 Java 在代码的第 2 行返回异常,并且不会继续运行其余代码

最新更新