2014-10-20 103 views
-1

幾個星期後,我終於找到了如何通過我的應用程序解析我的號碼。但是現在當以以下格式給出數字時,該應用程序崩潰:9283928398293822.483.84.3883ParseInt在較長的數字上崩潰

我只是不知道如何讓它接受這些數字格式。問題與條形碼掃描儀相關,所以我真的需要它來接受這些數字格式。

我用來解析的代碼是:

JSONObject c = user.getJSONObject(Integer.parseInt(xyz)-1); 

回答

1

對於較長的號碼,你應該使用Long.parseLong(),而不是Integer.parseInt()

下一個案例22.483.84.3883不是數字。您將從這裏獲得NumberFormatException

您可以使用

try{ 
    long val=Long.parseLong("xxxx") 
}catch(NumberFormatException e){ 
    // exception 
} 

如果你要考慮22.483.84.388322-483-84-3883爲有效的情況下,就需要更換.-第一。

如:

long val=Long.parseLong("22.483.84.3883".replaceAll("\\.", "")); 
System.out.println(val); 
+0

你知道我怎麼能接受22.483.84.3883?或者包含破折號? – derhak 2014-10-20 08:19:26

+0

對不起,但我不明白,我需要更換以使其有效? – derhak 2014-10-20 08:22:06

+0

@derhak檢查我的編輯。 – 2014-10-20 08:22:22

0

使用Long.parseLong代替。整數類型不能包含如此大的數字(Integer的最大值是2^31-1,遠小於92839283982938)。另外,你應該消除這些點。

嘗試:

JSONObject c = user.getJSONObject(Long.parseLong(xyz.replace(".",""))-1); 
+0

會也接受多個斷點號碼等。?或破折號? – derhak 2014-10-20 08:17:48

+0

@derhak在分析數字之前,您應該刪除斷點。 – Eran 2014-10-20 08:21:49