首页 > 解决方案 > 这里的“s:”是什么意思?

问题描述

我正在尝试使用 parseDouble() 将字符串值解析为双精度类型。Parse double 接受我使用 getText() 传递给它的字符串。但它不起作用。然后我用双引号将它连接起来。它现在正在工作。但我在这里有一个困惑。尽管它接受一个字符串并且 getText() 当然是获取一个字符串,但为什么它在没有连接的情况下无法工作。编写语句后,编译器添加了“s:”。我也想知道这在这里意味着什么。我正在使用 Android Studio 3.5.0.0

我努力了:

val1=Double.parseDouble(ioTxt.getText());

但这不起作用。

正确的说法是:

val1 = Double.parseDouble(s: ioTxt.getText()+"");

ioTxt 是一个文本视图。Val1 是 double 类型的变量。s:是编译器添加的东西,它不是上面写的语法和语句的一部分

如果写入 toString() 而不是串联,上述语句也可以很好地工作。这是:

val1 = Double.parseDouble(ioTxt.getText().toString());

但我还是不明白为什么它需要 toString() 才能正常工作。

我希望在不使用引号或 toString() 连接的情况下使用它。

标签: java

解决方案


但我还是不明白为什么它需要 toString() 才能正常工作。

Double.parseDouble()接受一个类型的参数String

getText()方法显然返回 a 以外的内容String,因此您需要进行转换。

附加一个空字符串是一种强制String转换的 hacky 方法(+带有一个String参数的运算符隐式调用toString()另一个参数)。更喜欢显式toString()调用。

's:' 只是 所使用的参数名称,parseDouble()并由您的 IDE 显示为提示。它实际上并没有修改您的源代码。


推荐阅读