如何以正确的方式从EditText中获得双倍的效果?

时间:2014-05-08 10:54:46

标签: java android parsing android-edittext double

有谁知道如何解析EditText中的double?

我知道怎么做,但这不是我想的正确方法。有没有人有最好的做法?

谢谢。

3 个答案:

答案 0 :(得分:7)

你可以试试这个:

double value;
String text =your_edittext.getText().toString();
if(!text.isEmpty())
try
{
   value= Double.parseDouble(text);
   // it means it is double
} catch (Exception e1) {
   // this means it is not double 
   e1.printStackTrace();
}

答案 1 :(得分:1)

您在EditText中键入的是String。

如何检查edittext是否为空?

String str = edit_text.getText().toString();
if (str.trim().equals("")
Toast.makeText(getApplicationContext(),
                    "EditText is empty.",
                    Toast.LENGTH_SHORT).show();

答案 2 :(得分:0)

从 EditText (Kotlin) 中解析一个 double

  • toDouble() 函数效果很好,但如果字符串不是数字的有效表示。抛出 NumberFormatException 异常。

  • toDoubleOrNull() 函数返回一个双精度值。如果字符串不是数字的有效表示,则返回 null

实施

fun parseToDouble(value :Editable): Double { 
    if(value.isNotEmpty()){
        val result = value.trim().toString().toDoubleOrNull()
        if(result != null) 
            return result
        else 
            return 0.0
    }else { 
      return 0.0
   }
}

或者上面的代码可以使用Extension functions

来简化
fun Editable.parseToDouble(): Double { 
    if(this.isNotEmpty()){
        val result = this.trim().toString().toDoubleOrNull()
        if(result != null) 
            return result
        else 
            return 0.0
    }else { 
      return 0.0
   }
}
  • 扩展函数中的“this”关键字对应于接收者对象。也可以删除

或者上面的代码可以使用 Kotlin When expression

进行简化
fun Editable.parseToDouble(): Double { 
    return when(isNotEmpty()){
    true -> {
        val result = trim().toString().toDoubleOrNull()
        if(result != null) result else 0.0
      }
   else -> 0.0
}

或者上面的代码可以通过Convert to expression body (“return” vs expression body) 来简化

fun Editable.parseToDouble(): Double = when(isNotEmpty()){
    true -> {
        val result = trim().toString().toDoubleOrNull()
        if(result != null) result else 0.0
      }
   else -> 0.0
}

或者上面的代码可以使用 Kotlin Elvis Operator

进行简化
fun Editable.parseToDouble() = when(isNotEmpty()){
    true -> trim().toString().toDoubleOrNull()?: 0.0
    else -> 0.0
}

最简单的版本(最佳)

fun Editable.parseToDouble() = trim().toString().toDoubleOrNull()?: 0.0

fun Editable.parseToDouble() = toString().toDoubleOrNull()?: 0.0

注意事项:同样可以创建parseToIntparseToLong函数