我需要将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
慕容森
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
添加回答
举报
0/150
提交
取消