3 回答
TA贡献1893条经验 获得超10个赞
但我再次不明白为什么它需要 toString() 才能正常工作。
Double.parseDouble()
接受类型为 的参数String
。
该getText()
方法显然返回除 a 之外的其他内容String
,因此您需要进行转换。
附加空字符串是强制String
转换的一种巧妙方法(+
具有一个String
参数的运算符隐式调用toString()
另一个参数)。更喜欢显式toString()
调用。
's:' 只是 所使用的参数名称parseDouble()
,并由 IDE 作为提示显示。它实际上并没有修改您的源代码。
TA贡献1797条经验 获得超6个赞
该android.widget.TextView.getText()
方法被声明为返回 aCharSequence
而不是 a String
。(参见javadoc。)
该CharSequence
接口是 的声明接口之一String
。(参见javadoc。)
这Double.parseDouble
需要一个String
论点。(参见javadoc。)
因此,这里存在类型不匹配:
val1 = Double.parseDouble(ioTxt.getText()); // expects String // provided CharSequence
但这有效:
val1 = Double.parseDouble(ioTxt.getText().toString());
因为toString()
正在将 转换CharSequence
为 a String
。这是进行转换的另一种方式:
val1 = Double.parseDouble(ioTxt.getText() + "");
但请注意,这不是有效的 Java 代码:
val1 = Double.parseDouble(s: ioTxt.getText()+"");
您很可能误解了您的 IDE 所说的内容。
TA贡献1836条经验 获得超4个赞
parseDouble接受 String 作为参数。
当您尝试传递双精度值而不是字符串时,会出现错误。
对于第二个问题,编译器永远不会向源文件中添加任何内容。您看到的“s:”是您正在使用的 IDE 的一种方式,用于显示您在调用方法时设置的参数。
添加回答
举报