我使用以下代码从字符串中解析浮点:
EditText CurrPLC = (EditText) findViewById(R.id.CurrPLC);
String s5 = CurrPLC.getText().toString();
float F5 = Float.parseFloat(s5);在我尝试将负值写入EditText之前,这是很好的工作。因为“负面”符号和小数点在同一个按钮上,所以我先写一个小数点,然后应用程序崩溃,因为一个字符串。不能将其解析为浮点数。该代码将在EditText中的任何文本更改上执行。
下面是布局文件中的EditText代码:
<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" />
/>是我做错了什么,还是说这只是在错误发生之前处理这个问题?
谢谢
发布于 2016-10-24 20:42:15
基于您对使用TextWatcher的注释,它将尝试在每个键按下解析浮点数,问题不是负数问题。
parseFloat()可以很好地处理负数。问题是空字符串或-、-.或.最有可能出现。
因此,您不应该对每个键按下解析,而是只在需要的地方进行解析(我不确定您的完整用例,因此我不能评论解析浮点数的适当时间和地点)。否则,无论您当前解析浮点数的位置,都需要为try/catch添加java.lang.NumberFormatException。
https://stackoverflow.com/questions/40184702
复制相似问题