双无效。 android中的数字格式异常

Posted

技术标签:

【中文标题】双无效。 android中的数字格式异常【英文标题】:Invalid Double. Number format exception in android 【发布时间】:2014-03-07 08:18:52 【问题描述】:

我在 xml 中有这个。

<EditText
                android:id="@+id/creditlimitfield2"
                android:hint="0"
                android:inputType="numberDecimal" />

所以,edittext 的默认值为 0。

在代码中,我有这个

creditlimit = (EditText) findViewById(R.id.creditlimitfield2);
double credit_limit = Double.valueOf(creditlimit.getText().toString());

或者,我尝试过:

double credit_limit = Double.parseDouble(creditlimit.getText().toString());

double credit_limit = new Double(creditlimit.getText().toString());

当我运行程序时,它给出了错误

Numberformatexception. Invalid double "".

请注意该字段不能为空。任何建议都会有所帮助。


我见过很多问题,几乎与它相似,答案非常少,而且没有一个有助于解决我的问题。所以,请不要在没有检查其他问题的情况下将其标记为“类似问题”。

【问题讨论】:

Invalid double in converting String to Double 的可能重复项 各位,请仔细阅读这两个问题,同时将其标记为重复。这个问题的重点是使用该重复问题中给出的解决方案时出现的问题。 【参考方案1】:

getText() 不返回android:hint 中的值。所以你试图将一个空字符串转换为双精度。请改用android:text 属性。

<EditText
    android:id="@+id/creditlimitfield2"
    android:text="0"
    android:inputType="numberDecimal" />

【讨论】:

我很确定。否则 getHint() 将毫无用处。 @Shasi getText() 不会返回提示.. 它会返回在 EditText 中设置的文本 @JaiSoni 然后在 onResume 或 Button click 中获取文本,因为您调用它太快了。可能在 onCreate【参考方案2】:

看起来creditlimit.getText().toString() 没有返回有效的双精度值。确保在 EditText 中输入有效的双精度。

Numberformatexception. Invalid double ""

空字符串不是有效的双精度。

我猜你在初始化之后就有了这个,确保你在按钮点击或onResume中从edittext获取文本

double credit_limit = Double.valueOf(creditlimit.getText().toString())

如果您想要默认值,请关注 blackbelt 的帖子。

【讨论】:

@Shasi 你怎么能确定。你stacktrace建议它不是0它的“”空字符串 @Shasi 有一个按钮。在edittext中输入数字。在按钮单击或 onResume 中从 edittext 获取文本。你做到了吗??【参考方案3】:

试试这个Sting limit=creditlimit.getText().toString(); double credit_limit =0; if(limit!=null && !limit.isEmpty()) credit_limit = Double.parseDouble(limit);

【讨论】:

以上是关于双无效。 android中的数字格式异常的主要内容,如果未能解决你的问题,请参考以下文章

令人困惑的数字格式异常

理解 ValueError:python 中的“无效数字”

hsqldb 中的间隔格式异常无效,但查询在 Postgres 中有效

Android MySQL 异常错误

CSV文件格式介绍

无法解释数字格式中的异常