Android Float.parseFloat由于小数点而导致致命错误
我使用以下代码从字符串解析浮点:Android Float.parseFloat由于小数点而导致致命错误,android,Android,我使用以下代码从字符串解析浮点: EditText CurrPLC = (EditText) findViewById(R.id.CurrPLC); String s5 = CurrPLC.getText().toString(); float F5 = Float.parseFloat(s5); 这非常有效,直到我尝试将负值写入EditText。因为“负”符号与小数点位于同一按钮上,所以我先写一个小数点,然后应用程序崩溃,因为“.”字符串无法解析为浮点值。在EditText 以下是布局
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" />
/>
/>
是我做错了什么,还是只是在错误发生之前处理好了
谢谢根据您关于使用
TextWatcher
解析每次按键时的浮点值的评论,问题不在于负数
parseFloat()
可以处理负数。问题很可能是空字符串或-
,-.
或
出现的
因此,您不应该在每次按键时进行解析,而应该只在需要的地方进行解析(我不确定您的完整用例,因此我无法对解析浮点的适当时间和位置发表评论)。否则,您需要为
java.lang.NumberFormatException
添加一个try
/catch
,无论您当前在何处解析浮点。根据您关于使用TextWatcher
尝试在每次按键时解析浮点的评论,问题不在于负数
parseFloat()
可以处理负数。问题很可能是空字符串或-
,-.
或
出现的
因此,您不应该在每次按键时进行解析,而应该只在需要的地方进行解析(我不确定您的完整用例,因此我无法对解析浮点的适当时间和位置发表评论)。否则,您需要为
java.lang.NumberFormatException
添加一个try
/catch
,无论您当前在哪里解析浮点值。您在什么时候解析浮点值?您使用的是TextWatcher
还是按下按钮?我不明白你所说的是什么意思,“否定”符号与小数点在同一个按钮上
@AbtinGramian是的,我使用的是文本观察程序
,因此每次按下一个键时它都会更新。要将“负”符号(-)与小数点放在同一按钮上,必须按两次小数点按钮。这只是标准的安卓数字键盘,你在什么时候解析浮点数?您使用的是TextWatcher
还是按下按钮?我不明白你所说的是什么意思,“否定”符号与小数点在同一个按钮上
@AbtinGramian是的,我使用的是文本观察程序
,因此每次按下一个键时它都会更新。要将“负”符号(-)与小数点放在同一按钮上,必须按两次小数点按钮。这只是标准的安卓数字键盘