首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NumberFormatException错误

NumberFormatException错误
EN

Stack Overflow用户
提问于 2012-03-17 21:55:11
回答 5查看 16.1K关注 0票数 4

守则是:

代码语言:javascript
复制
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引起:无效浮点数:""

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-17 21:56:46

似乎editText2中的字符串是空的,所以它无法将其解析为浮点数。

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

代码语言:javascript
复制
float from_value;
try {
    from_value = Float.parseFloat(editText2.getText().toString());
}
catch(NumberFormatException ex) {
    from_value = 0.0; // default ??
}
票数 8
EN

Stack Overflow用户

发布于 2012-11-20 02:58:26

如果可能的话,您应该尽量避免使用try/catch,因为它不是首选的方法。

避免此错误的正确方法是在发生此错误之前停止该错误。

代码语言:javascript
复制
if (mEditText.getText().toString().equals("")) {
    value = 0f;
} else {
    value = Float.parseFloat(mEditText.getText().toString()); 
}

更新:由于您使用的是EditText,避免NumberFormatException的最简单方法是指定inputType属性,以便它只接受数字。XML示例:android:inputType="number"。尽管如此,您仍然可能得到数据类型无法保存的值更大(或更小)。

然后,根据您的用例,您甚至可以通过使用自定义"IntEditText“或自定义InputFilter来提高级别,以便您可以指定一个min和最大值,并在各个应用程序之间重用代码。

票数 4
EN

Stack Overflow用户

发布于 2016-02-10 21:36:30

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

代码语言:javascript
复制
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中。

代码语言:javascript
复制
android:inputType="numberDecimal"

希望能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9754103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档