为了账号安全,请及时绑定邮箱和手机立即绑定

这里的“s:”是什么意思?

这里的“s:”是什么意思?

哆啦的时光机 2023-10-13 16:48:09
我正在尝试使用 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() 连接的情况下进行工作。
查看完整描述

3 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

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

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

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

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

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


查看完整回答
反对 回复 2023-10-13
?
互换的青春

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 所说的内容。


查看完整回答
反对 回复 2023-10-13
?
HUH函数

TA贡献1836条经验 获得超4个赞

parseDouble接受 String 作为参数。

当您尝试传递双精度值而不是字符串时,会出现错误。

对于第二个问题,编译器永远不会向源文件中添加任何内容。您看到的“s:”是您正在使用的 IDE 的一种方式,用于显示您在调用方法时设置的参数。


查看完整回答
反对 回复 2023-10-13
  • 3 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信