標籤:
異常資訊:
1.Exception in thread "main" java.lang.NumberFormatException: For input string: "1 "
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:458)
at java.lang.Integer.parseInt(Integer.java:499)
at com.geelou.test.ErrTest.main(ErrTest.java:6)
2.java.lang.NumberFormatException: For input string: ""
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Long.parseLong(Long.java:424) java.lang.Long.parseLong(Long.java:461)
3.java.lang.NumberFormatException: null
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Long.parseLong(Long.java:424) java.lang.Long.parseLong(Long.java:461)
錯誤關鍵字 java.lang.NumberFormatException 這句話明確告訴了我們是數字格式異常
錯誤原因:
1.中的問題想將String轉換為int類型時出錯,原因:"1 "中存在空格,字串中存在空格不能直接轉換為數字。
2.中的問題為將字串轉換為Long類型是出錯,原因:是字串為""(空串)。
3.中問題為將字串轉換為Long類型是時出錯,原因為字串為null
解決方案:
1.在轉換之前去空格,Integer.parseInt(numString.trim()) ;
2.在轉換之前判空串:if(s!=""){轉換}
3.在轉換之前判空:if(s!=null){轉換}
拓展:
出現這個問題的原因一般為資料格式轉換的問題。
看下面錯誤堆棧:
就知道是在轉換什麼類型的資料時出現了問題。
具體是哪個類的哪個方法的哪一行的錯誤了,找自己寫的第一個類com.geelou.test.ErrTest.main(ErrTest.java:6) 原來是 com.geelou.test.ErrTest 類的main方法裡的第6行出錯了。
這樣就定位到了System.out.println(Integer.parseInt(numString));
具體是 Integer.parseInt(numString) 時出的錯,知道了錯誤地方就可以相應的解決了
java.lang.NumberFormatException