我今天刚刚为我的一个Android应用程序收到此错误。
设备nexus 7与android 4.2.2
java.lang.NumberFormatException: Invalid int: "+5"
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parse(Integer.java:375)
at java.lang.Integer.parseInt(Integer.java:366)
at java.lang.Integer.parseInt(Integer.java:332)
at sk.onClick(Unknown Source)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
映射错误日志后,我发现错误来自这段确切的代码。
EditText itemBonus = (EditText) dialogView.findViewById(R.id.item_bonus);
String itemBonusString = itemBonus.getText().toString().trim();
if (itemBonusString.equals("")) {
itemBonusString = "0";
}
item.setItemBonus(Integer.parseInt(itemBonusString));
BUT 我已经定义了如下所示的editext
<EditText
android:id="@+id/item_bonus"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="numberSigned" />
我知道当inputType为numberSigned时,键盘只允许使用十进制数字或减号符号,如“2”或“-3”。
首先我想知道用户如何设法在edittext中插入加号,因为毕竟不允许。 所以我检查了模拟器,不幸的是我发现即使在4.2.2版本的android中不允许使用+号。在4.2.2及更高版本中,用户可以在EditText中使用inputType =“numberSigned”从onscreenkeyboard添加加号。不幸的是,它导致parseInt错误
所以在解释问题之后我想知道是否有人找到了解决方法,或者能为所有版本的android提供有效的解决方案?
答案 0 :(得分:2)
您可以在解析之前删除+
:
item.setItemBonus(Integer.parseInt(itemBonusString.replaceAll("+", "")));
答案 1 :(得分:2)
使用“+”
解析整数时无效的int
Simly Integer.parseInt()
无法识别+
符号。您有两种选择:
yourString.replace("+", "");
+#;-#