NumberFormatException错误

时间:2012-03-17 21:55:11

标签: java android

代码是:

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:无效的浮点数:“”

5 个答案:

答案 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)

恕我直言,你输入一些非浮动值导致此错误。