当x为NaN时,我试图以字符串格式输出NaN。然而,当我试图在Double.isNaN为真时返回 "NaN "的字符串时,控制台出现了String cannot be converted to double的错误。我试着用Double.parseDouble()将字符串r解析为double,但没有用。
这是我的代码。
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;
}
Console output
ActivationFunction.java:6: error: incompatible types: double cannot be converted to String r = Double.parseDouble(r); ^ ActivationFunction.java:8: error: incompatible types: String不能转换为double if (Double.isNaN(x)) return r; ^。
你正在尝试将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;
}
希望能帮到你 编码愉快...!
你的问题来自于这样一个事实,即你试图将这个值赋给 double
到 String
变量。r
被定义为 String
and Double.parseDouble(r)
返回 double
. 它将工作,如果你assing它到 result
来代替,就像这样。double result = Double.parseDouble(r);
然而,没有必要解析新的... double
从 String
在第一时间。你想回到 NaN
当 x == NaN
. 你可以直接返回 x
在这种情况下,因为,嗯, x
是 NaN
. 不需要另一个变量,解析和所有这些。
"NaN "不是一个双数,你不能把它转换为双数而不返回。x
因为Java在你的代码的第2行返回一个异常,而不会继续运行代码的其余部分。