天天看點

報錯解決:java.lang.NumberFormatException: For input string:“********”

報錯解決:控制台報錯 java.lang.NumberFormatException: For input string:

一開始以為是轉換出錯了,是以一直找轉換的問題,但是後來發現這個錯的根源在判斷:

報錯解決:java.lang.NumberFormatException: For input string:“********”

這裡加入判空字元串就沒有問題了,不加就會報上述錯誤。有點奇怪,這裡擷取得值是不為空得,也沒有空字元錯

報錯解決:java.lang.NumberFormatException: For input string:“********”

使用空字元串測試跟蹤equals源碼也沒有發現問題 。下面是equals大緻源碼:

報錯解決:java.lang.NumberFormatException: For input string:“********”

有明白原因得朋友請指導下!

對于字元串判斷還是要堅持養成習慣,null和“”都做判斷可以避免這個問題

補充:

昨天這個問題困擾了一天,終覺是轉換問題,是以抽時間又看了下那個判斷,判斷裡面有個parseInt轉換,看了下裡面的源碼

發現了錯誤根源

報錯解決:java.lang.NumberFormatException: For input string:“********”
報錯解決:java.lang.NumberFormatException: For input string:“********”

我們出現的就是這個異常,再看轉換中有個10,下面還有判斷,想起一個基礎,int的長度問題,測試類走起:

10位數,正常輸出

報錯解決:java.lang.NumberFormatException: For input string:“********”

加一位:出現了熟悉的味道。

報錯解決:java.lang.NumberFormatException: For input string:“********”

 踏實了,還是轉換問題。

這裡字元串長度超出了int的長度,無論使用哪種轉換int的方法都不可以,或者就是轉出了其他值

報錯解決:java.lang.NumberFormatException: For input string:“********”

這裡如果換成long類型也就沒有問題了。

報錯解決:java.lang.NumberFormatException: For input string:“********”

那麼回到昨天的問題,看來不是加上判斷就可以了,那個判斷的意義是把轉換跳過了應該,關鍵是資料庫也插入了。有點靈異,本來想把昨天的删除,後來想想,留着警示吧。望昨天看過的十幾個小夥伴能回頭在看看,免得被誤導。