【发布时间】:2014-05-08 10:54:45
【问题描述】:
有谁知道如何从 EditText 解析双精度?
我知道该怎么做,但我认为这不是正确的方式。有没有人有最好的做法?
谢谢。
【问题讨论】:
-
到目前为止你有什么尝试
标签: java android parsing android-edittext double
有谁知道如何从 EditText 解析双精度?
我知道该怎么做,但我认为这不是正确的方式。有没有人有最好的做法?
谢谢。
【问题讨论】:
标签: java android parsing android-edittext double
你可以试试这个:
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();
}
【讨论】:
无论您在 EditText 中键入什么都是字符串。
如何检查edittext是否为空?
String str = edit_text.getText().toString();
if (str.trim().equals("")
Toast.makeText(getApplicationContext(),
"EditText is empty.",
Toast.LENGTH_SHORT).show();
【讨论】:
从 EditText (Kotlin) 解析双精度
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函数
【讨论】: