2015-07-22 44 views
1

我試圖轉換Stringint。然而,其遭遇錯誤拋出NumberFormatException無法將字符串轉換爲INT硒JAVA

java.lang.NumberFormatException: For input string: "07221255201" 

代碼:

int value = Integer.valueOf(itemData.get(row).ERP_Customer_Item.trim()); 

請告知。

回答

3

7221255201出於原始int範圍。您應該使用long類型。 這應該很好地工作:

long value = Long.parseLong(itemData.get(row).ERP_Customer_Item.trim()); 

而對於其他情況下,儘量選擇保留原始類型範圍記住,當你寫代碼的做法。這就像有一個由不同大小的錘子組成的錘子組合,並在上下文中使用適當的錘子。例如,如果您知道某個特定變量始終位於[-128,127]範圍內,則應該使用short而不是int,因爲在後一種情況下會浪費很多位。

+0

嗨,任何樣品可以提供?這是我的新手。 THanks –

+0

@DamonNg增加了解決方案。 – Juvanis

+0

其工作..感謝非常非常:d –

1

你的數目大於Integer.MAX_VALUE(2^31 - 1,或2147483647),因此它不能被解析成一個int。

小心從字符串轉換爲數字。無論創建這個數字是不是使用java ints。

在這種情況下,您可以使用Long.parseLong轉換爲long或Long.valueOf以獲得Long(對象,而不是主數據),但爲什麼您首先從字符串轉換?您正在丟失信息(在這種情況下,前導零可能會或可能不會很重要,這取決於您對數據所做的操作)。轉換有一種方法可以在某處倒退。

+0

HI馬克,你是對的,領先的零不再工作,任何想法如何解決這個問題? @Mark Fisher –

+0

你對這個ID做什麼?它是如何失效的?你是否把它從別的地方轉移過來?爲什麼你需要首先轉換它?你是否將它存儲在某個需要成爲數字的地方?你能用它的原始字符串格式來使用它嗎?我建議你深入思考如何使用這個價值,並且詢問另一個更具體的問題,如果你仍然有問題,也許更新你的原始問題,這樣我們可以提供幫助。目前,這是一個廣泛的解決方案。 –