代码是:
editText2=(EditText) findViewById(R.id.editText2);
editText3=(EditText) findViewById(R.id.editText3);
float from_value= Float.parseFloat(editText2.getText().toString());
editText3.setText(" "+(from_value * 100.0));
logcat错误是:
03-18 03:19:07.847:E / AndroidRuntime(875):引起:java.lang.NumberFormatException:无效的浮点数:“”
答案 0 :(得分:8)
似乎editText2中的String为空,因此无法将其解析为float。
一种可能的解决方案是首先检查String是否为空,然后确定默认值,另一种是捕获异常:
float from_value;
try {
from_value = Float.parseFloat(editText2.getText().toString());
}
catch(NumberFormatException ex) {
from_value = 0.0; // default ??
}
答案 1 :(得分:4)
如果可能的话,你应该尽量避免使用try / catch。因为它不是首选的方法。
避免此错误的正确方法是在它发生之前将其停止。
if (mEditText.getText().toString().equals("")) {
value = 0f;
} else {
value = Float.parseFloat(mEditText.getText().toString());
}
更新:由于您使用的是EditText
,因此避免NumberFormatException的最简单方法是指定inputType
属性,以便它只接受数字。 XML示例:android:inputType="number"
。但是,您仍可能获得数据类型无法容纳的值(或更小)。
然后,根据您的使用情况,您甚至可以使用自定义“IntEditText”或自定义InputFilter
来提升级别,以便您可以指定最小值和最大值,并在应用程序之间重复使用代码
答案 2 :(得分:1)
editText2=(EditText) findViewById(R.id.editText2);
editText3=(EditText) findViewById(R.id.editText3);
if(!editText2.getText().toString().matches("")){
float from_value= Float.parseFloat(editText2.getText().toString());
editText3.setText(" "+(from_value * 100.0));
}
并将此行添加到xml for editText2
android:inputType="numberDecimal"
希望它有所帮助!
答案 3 :(得分:0)
在将其解析为float之前,验证从editText2读取的值可能是一个好主意。首先确保它是有效的数字。
答案 4 :(得分:0)
恕我直言,你输入一些非浮动值导致此错误。