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

kotlin / java-是否有类似TryParse()的东西?

kotlin / java-是否有类似TryParse()的东西?

森栏 2021-05-06 14:27:52
我需要将3 editText转换为Double并进行自动计算。问题是:在Java中,Double.parseDouble()如果editText字符串为null ,则使用引发异常,因此我必须使用try catch。在Kotlin中,使用toDoubleOrNullI必须检查“ if”是否为null。现在,我必须要做2个editText val a = firstDobule + secondDouble,然后val b = a + 2 使用上述方法我无法分开计算:它需要同时转换所有3个editText,而我想一次转换一个奇异的editText。为了使您更好地理解,这是C#中的代码: Double.TryParse(firstEditText.Text, out Double firstDouble); Double.TryParse(secondEditText.Text, out Double secondDOuble);Double a = firstDouble + secondDOuble;Double b = a + 2;在C#中,使用TryParse不会引发任何异常,也不需要手动检查是否为null。我想这样做,但是在Kotlin或Java中
查看完整描述

2 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

您可以为此编写一个扩展函数,EditText该函数将其文本值作为双精度值返回。

fun EditText.doubleValue() = text.toString().toDoubleOrNull() ?: 0.0

假设您要在输入不可解析的情况下获得0。然后,您可以轻松读取值:

val a = firstEditText.doubleValue() + secondEditText.doubleValue()
val b = a + 2


查看完整回答
反对 回复 2021-05-19
?
慕容森

TA贡献1853条经验 获得超18个赞

我认为@Pawel在正确的轨道上,但是,我将定义一个extension属性而不是一个extension函数,因为它在语义上似乎更合适:

val EditText.doubleValue: Double    
get() = text.toString().toDoubleOrNull() ?: 0.0

用法如下所示:

val a = firstEditText.doubleValue + secondEditText.doubleValue
val b = a + 2


查看完整回答
反对 回复 2021-05-19
  • 2 回答
  • 0 关注
  • 355 浏览

添加回答

举报

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