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 的一种方式,用于显示您在调用方法时设置的参数。
添加回答
举报
