有谁知道如何解析EditText中的double?
我知道怎么做,但这不是我想的正确方法。有没有人有最好的做法?
谢谢。
答案 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
}
}
或者上面的代码可以使用 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
注意事项:同样可以创建parseToInt和parseToLong函数