当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
定义为String
and Double.parseDouble(r)
返回double
。如果您将其配置为result
,它将起作用,如下所示:double result = Double.parseDouble(r);
但是,首先没有必要从String
解析新double
。您想在x == NaN
时返回NaN
。在这种情况下,您可以返回x
,因为,好吧,x
NaN
。不需要另一个变量,解析等等。
您正在尝试将字符串转换为双精度并将其值存储在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 行返回异常,并且不会继续运行其余代码