猿问

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

我需要将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中


森栏
浏览 356回答 2
2回答

喵喵时光机

您可以为此编写一个扩展函数,EditText该函数将其文本值作为双精度值返回。fun EditText.doubleValue() = text.toString().toDoubleOrNull() ?: 0.0假设您要在输入不可解析的情况下获得0。然后,您可以轻松读取值:val a = firstEditText.doubleValue() + secondEditText.doubleValue() val b = a + 2

慕容森

我认为@Pawel在正确的轨道上,但是,我将定义一个extension属性而不是一个extension函数,因为它在语义上似乎更合适:val EditText.doubleValue: Double     get() = text.toString().toDoubleOrNull() ?: 0.0用法如下所示:val a = firstEditText.doubleValue + secondEditText.doubleValue val b = a + 2
随时随地看视频慕课网APP

相关分类

Java
我要回答