我如何解决 numberformatexception 错误
Posted
技术标签:
【中文标题】我如何解决 numberformatexception 错误【英文标题】:how do i resolver numberformatexception error 【发布时间】:2012-07-24 05:22:20 【问题描述】:我正在尝试从编辑文本中解析双精度,但我不断收到数字格式异常错误。
我最初尝试过这个...
premiumvalue = Double.parseDouble(premium.getText().toString());
amountweightvalue = Double.parseDouble(amountweight.getText().toString());
然后尝试了这个......无济于事。
try
premiumvalue = Double.parseDouble(premium.getText().toString());
catch (final NumberFormatException e)
premiumvalue = 0;
try
amountweightvalue = Double.parseDouble(amountweight.getText().toString());
catch (final NumberFormatException e)
premiumvalue = 0;
我是菜鸟,如果能帮助解决这个问题,我们将不胜感激。
【问题讨论】:
premium.getText().toString()的值是多少? 为什么要改成toString? 当您的 editText 值为空字符串“”时,可能会发生这种情况。你在检查这种情况吗? 在解析成双倍之前尝试修剪字符串。 @VivekKumarSrivastava:值是数字。我将edittext设置为只接受数值 【参考方案1】:我已经测试了你的代码,我自己测试你的代码,发现有以下可能找到NumberFormatException
:
-
如果
EditText
值为空,So apply condition for EditText blank value.
如果EditText
值只有点(.),So apply condition for EditText dot value.
在你的评论中你说你正在使用这个
String text = premium.getText().toString();
if(text.equals(".")||text.equals("-.")||text.equals(""))
premium.setText("0");
所以我的意思是
-
您是否对
premium
和amountweight
EditText 使用相同的内容,然后将字符串解析为双精度??
以及为什么需要检查 '_' 的条件,因为如果您为 EditText 设置 android:inputType="numberDecimal"
属性,那么 EditText 只接受 0-9 和 .价值。
如果您使用android:inputType="numberDecimal"
属性,则不需要修剪 EditText 值,因为 Edittext 不接受空格。
不需要检查null
条件,因为EditText
永远不会返回null
值。
我已经对您的代码进行了很多测试,如果我遵循上述几点,则找不到 NumberFormatException
。
【讨论】:
代码仍然无法正常工作:String numberStr = premium.getText().toString();双数 = Double.parseDouble(numberStr); if(numberStr.equals(".")||numberStr.equals("-.")||numberStr.equals("")) premium.setText("0"); else if(number >= 1 && number = 10) premium.setText("."+numberStr); else if(number -10) premium.setText(".0"+Math.abs(number)); else if(number 0) 你的代码有很多错误 1. 你总是使用第一次计算的 numberStr。 2. 在条件检查之前将字符串解析为双精度。 3. 为什么你用'.'设置值每当用户能够输入“。”在 EditText 中,然后两个点将再次成为 Numberformatexception 的原因。以上是关于我如何解决 numberformatexception 错误的主要内容,如果未能解决你的问题,请参考以下文章