首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由于十进制,Android Float.parseFloat会导致致命的错误。

由于十进制,Android Float.parseFloat会导致致命的错误。
EN

Stack Overflow用户
提问于 2016-10-21 20:08:25
回答 1查看 755关注 0票数 1

我使用以下代码从字符串中解析浮点:

代码语言:javascript
运行
复制
 EditText CurrPLC = (EditText) findViewById(R.id.CurrPLC);
 String s5 = CurrPLC.getText().toString();
 float F5 = Float.parseFloat(s5);

在我尝试将负值写入EditText之前,这是很好的工作。因为“负面”符号和小数点在同一个按钮上,所以我先写一个小数点,然后应用程序崩溃,因为一个字符串。不能将其解析为浮点数。该代码将在EditText中的任何文本更改上执行。

下面是布局文件中的EditText代码:

代码语言:javascript
运行
复制
 <EditText
            android:id="@+id/CurrPLC"
            android:layout_width="100dp"
            android:layout_height="30dp"
            android:padding="2dp"
            android:hint="eg. 3277"
            android:gravity="center_horizontal"
            android:layout_gravity="right"
            android:textSize="13sp"
            android:digits="-0123456789."
            android:inputType="numberSigned|numberDecimal"
            android:maxLength="10"
            android:background="@drawable/plc_edit_text_holo_light"
            android:layout_marginRight="19dp"
            android:layout_marginEnd="19dp"
            android:layout_alignBaseline="@+id/CurrPLCLabel"
            android:layout_alignBottom="@+id/CurrPLCLabel"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />
        />

是我做错了什么,还是说这只是在错误发生之前处理这个问题?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-24 20:42:15

基于您对使用TextWatcher的注释,它将尝试在每个键按下解析浮点数,问题不是负数问题。

parseFloat()可以很好地处理负数。问题是空字符串或--..最有可能出现。

因此,您不应该对每个键按下解析,而是只在需要的地方进行解析(我不确定您的完整用例,因此我不能评论解析浮点数的适当时间和地点)。否则,无论您当前解析浮点数的位置,都需要为try/catch添加java.lang.NumberFormatException

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

https://stackoverflow.com/questions/40184702

复制
相关文章

相似问题

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