Java 数字格式异常错误

Java 数字格式异常错误,java,android,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

代码是:

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


editText2中的字符串似乎为空,因此无法将其解析为float

一种可能的解决方案是先检查字符串是否为空,然后决定默认值,另一种是捕获异常:

float from_value;
try {
    from_value = Float.parseFloat(editText2.getText().toString());
}
catch(NumberFormatException ex) {
    from_value = 0.0; // default ??
}

在将editText2解析为float之前,验证从editText2读取的值可能是一个好主意。首先确保它是一个有效的数字。

如果输入了导致此错误的非浮点值,则应尽量避免使用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
来提高级别,以便您可以指定最小值和最大值,并跨应用程序重复使用代码。

对我来说,最好的方法是这样做:

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));
}
并将这一行添加到editText2的xml中

android:inputType="numberDecimal"

希望有帮助

错误消息很清楚:您试图将空字符串解析为浮点。你期望的价值是多少?还有一个疑问。我想在
editText2
中输入数字后立即在
editText3
中显示该值。我怎么做?请帮助。在我的例子中,显示值是输入值的100倍。因此,如果用户想要输入10,他首先必须输入1,输入1后,EditText3应显示100。现在0保留,用户输入它以生成数字10,现在EditText3应显示1000。我认为您必须使用自己的类扩展EditText,并重写
onTextChanged
方法。