我正在使用zbar解碼QR的Android應用程序。 QR的結構是:「SpecificPrefix/[Number]」。Android Java - 分析「76」時的NumberFormatException
String d = sym.getData(); // I get the QR text from the symbol
if(d.startsWith(QRUri)) { // QRUri is a string const containig the prefix
int id;
try {
Log.d("NOT", "QR Subst \"" + d.substring(QRUri.length()) + "\""); // Print the data after the Prefix
id = Integer.parseInt(d.substring(QRUri.length())); // Try to parse it to int
} catch(NumberFormatException e) {
e.printStackTrace();
id = 0;
}
}
此代碼工作的每一個QR到目前爲止,但今天我發現,「SpecificPrefix/76」事實並非如此。
這是日誌:
D/NOT﹕ QR Subst "76"
D/NOT﹕ No Int found!
W/System.err﹕ java.lang.NumberFormatException: Invalid int: "76"
W/System.err﹕ at java.lang.Integer.invalidInt(Integer.java:138)
W/System.err﹕ at java.lang.Integer.parse(Integer.java:375)
W/System.err﹕ at java.lang.Integer.parseInt(Integer.java:366)
W/System.err﹕ at java.lang.Integer.parseInt(Integer.java:332)
W/System.err﹕ at [...].MainActivity$3.onPreviewFrame(MainActivity.java:146)
W/System.err﹕ at android.hardware.Camera$EventHandler.handleMessage(Camera.java:841)
W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err﹕ at android.os.Looper.loop(Looper.java:137)
W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:4921)
W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
java.lang.NumberFormatException:無效INT: 「76」 我不知道爲什麼它不工作!
在Android 4.1.2上測試過,但它似乎不適用於4.4.2。
在此先感謝任何希望解決問題的人。
在猜測,我敢打賭,你有你的字符串中的隱形字符。檢查這篇文章,也許嘗試在特定的字符串。 http://stackoverflow.com/questions/6198986/how-can-i-replace-non-printable-unicode-characters-in-java – DrewJordan 2015-03-13 19:17:56
你是否嘗試用'id = Integer.parseInt(d.substring( 。QRUri.length())修剪());'? – MrEngineer13 2015-03-13 19:18:05