2016-04-09 51 views
0

給予java.lang.NumberFormatException我有一個字符數組作爲的Integer.parseInt在Java中

char[] bitsString = new char[16]; 
bitsString = {'1','1','1','1','1','1','0','1','1','1','1','0','0','1','1','0'}; 

然後我它轉化成相應的整數,如下所示:

int givenNumber = Integer.parseInt(new String(bitsString), 2); 

上述邏輯工作正常當數字串的字符串長度小於10.但是當它增加到11或更多時,它顯示我java.lang.NumberFormatException爲什麼

+3

無法重現。 – Tunaki

+2

這在我的電腦上編譯得很好。輸出是64998. – Hackerdarshi

+0

推測,當你提供某種無效輸入時,它會拋出異常;由於您在此處提供了有效的輸入,因此我們無法告訴您** ** * * * **爲什麼** *未指定*輸入引發異常。 –

回答

1

經過一些命中和試驗後,我發現這是16位數值超過Integer的限制。

但是,當它從int改爲long

long givenNumber = Long.parseLong(new String(bitsString), 2); 

它工作完全正常。由於在這種情況下,long長度爲64位。

+2

Java中的整數長度是32位。 – Henry