2012-09-21 33 views
-2

當聞聽此事真的很煩人的錯誤這是我的代碼下載和閱讀在我的Dropbox文件中的文本。版本是一個URL。讀,把一個字符串到一個數組

BufferedReader in = new BufferedReader(new InputStreamReader(version.openStream())); 
String inputLine; 
int line = 0; 
try{ 
    while ((inputLine = in.readLine()) != null){ 
     strings[line] = new String(inputLine); 
     line++; 
    } 
} catch (Exception e){ 
    e.printStackTrace(); 
} 

雖然,我得到了這個非常惱人的錯誤。

java.lang.ArrayIndexOutOfBoundsException:1
在sky.the.venture.client.Download.getCredits(Download.java:38)
在sky.the.venture.client.LauncherFrame.credits(LauncherFrame.java: 315)
在sky.the.venture.client.LauncherFrame。(LauncherFrame.java:49)
在sky.the.venture.Destiny。(Destiny.java:13)
在Start.main(Start.java :11)

所以,出現錯誤的部分是Download.java:38。這是

strings[line] = new String(inputLine); 

所以,如果有人可以幫助,我會很開心= d

+0

使用列表而不是數組,它會增長到任何你喜歡的長度。 – Adam

+0

數組沒有足夠的空間用於新元素。你想調整它嗎? –

+0

「真煩人的錯誤」 - 有沒有其他類型? – DNA

回答

3

那麼想必你只創建一個這樣的數組:

String[] strings = new String[1]; 

數組不調整自己Java的 - 事實上,他們不能調整大小。如果您需要動態大小的集合,請使用List<E>實現,例如ArrayList<E>

List<String> lines = new ArrayList<String>(); 
while ((inputLine = in.readLine()) != null) { 
    lines.add(inputLine); 
} 
+0

但是,如何將一個列表返回給String []? – KeirDavis

+0

使用'lines.ToArray()'返回一個字符串數組。 –

+0

...如果你真的需要。理想情況下,只需在列表中處理。 –

2

看來,你試圖寫入尚未分配的strings數組的元素。例如,如果您分配了類似strings[10]lines遞增到11,您將收到ArrayIndexOutOfBoundsException異常例外。

相關問題