我正在使用以下代码从字符串中解析float:
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" />
/>
有没有我做错了,或者这只是在发生错误之前处理这个问题?
由于
答案 0 :(得分:0)
根据您使用TextWatcher
的注释,该注释会尝试在每次按键时解析浮点数,问题不在于负数。
parseFloat()
可以正数处理负数。问题是空字符串或-
,-.
或.
最有可能。
因此,您不应该在每次按键时解析,而只是在您需要的任何地方进行解析(我不确定您的完整用例,因此我无法评论适当的时间和地点进行解析漂浮)。否则,您需要为try
添加catch
/ java.lang.NumberFormatException
,无论您当前正在解析浮点数。