【问题标题】:how do i resolver numberformatexception error我如何解决 numberformatexception 错误
【发布时间】: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设置为只接受数值

标签: android parsing error-handling number-formatting


【解决方案1】:

我已经测试了你的代码,我自己测试你的代码,发现有以下可能找到NumberFormatException

  1. 如果EditText值为空,So apply condition for EditText blank value.
  2. 如果EditText 值只有点(.),So apply condition for EditText dot value.

在你的评论中你说你正在使用这个

String text = premium.getText().toString();

if(text.equals(".")||text.equals("-.")||text.equals(""))
 { 
    premium.setText("0");
 }

所以我的意思是

  1. 您是否对premiumamountweight EditText 使用相同的内容,然后将字符串解析为双精度??
  2. 以及为什么需要检查 '_' 的条件,因为如果您为 EditText 设置 android:inputType="numberDecimal" 属性,那么 EditText 只接受 0-9 和 .价值。
  3. 如果您使用android:inputType="numberDecimal" 属性,则不需要修剪 EditText 值,因为 Edittext 不接受空格。
  4. 不需要检查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 的原因。
猜你喜欢
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 2020-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多