有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我需要将3个editText转换为Double并进行自动计算。问题是:在Java中,如果editText字符串为null,则使用Double.parseDouble()会引发异常,因此我必须使用try-catch。在Kotlin中,我必须使用toDoubleOrNull检查“if”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) 个答案

  1. # 1 楼答案

    您可以为EditText编写一个扩展函数,将其文本值作为double返回

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

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

    val a = firstEditText.doubleValue() + secondEditText.doubleValue()
    val b = a + 2
    
  2. # 2 楼答案

    我认为@Pawel的做法是正确的,但是,我会定义一个extension property而不是一个扩展函数,因为它在语义上似乎更合适:

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

    用法如下所示:

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