2012-03-20 66 views
4

當我使用一個for循環(像這樣:)的Java:獲得一個字符串從一個ArrayList

StringBuilder string = new StringBuilder(); 
    for(int i1 = 0; i1 < array.size()){ 
     string.append(arraylist.get(i).toString()); 
    } 

我得到一個outOfBouds崩潰。我需要按對象讀取數組列表對象,因此 arraylist.toString() 沒有用。

有幫助嗎?由於

+0

請再次閱讀您的代碼。 – xyz 2012-03-20 02:29:19

+0

我與i1似乎是問題。 – 2012-03-20 05:25:25

回答

2

你在你的循環使用i1,但你訪問元素i

這種混亂可能是由使用非描述性的變量名而引起的。例如,我看到arrayarraylist - 那些應該是相同的?

所以首先要關注的只是一些代碼清理。如果這不是確切的代碼,那麼告訴我們什麼是。另外請注意,您可以通過縮進全部4個空格來創建代碼塊。向我們展示堆棧跟蹤是什麼也是一個好主意。

理想的情況下,一個小的,完整的方案,我們可以編譯爲我們展示了誤差會產生最快的糾正答案。您可能會在創建該小程序時發現問題。

3

你需要增加循環控制變量。

for(int i=0; i<arraylist.size();i++){ 
    string.append(arraylist.get(i).toString()); 
} 

或者

for(Object str:arraylist){ 
    string.append(str.toString()); 
} 
1

我會寫這樣:

public static String concat(List<String> array, String separator) { 
    StringBuilder builder = new StringBuilder(1024); 
    for (String s : array) { 
     build.append(s).append(separator); 
    } 
    return builder.toString(); 
} 

你有沒有想過你會如何保持每個字符串中的級聯版本分開?每個人之間想要一個空間嗎?這看起來不太有用。

2

這麼多的錯誤,在短短三行代碼。真。試試這個:

StringBuilder string = new StringBuilder(); 
for (int i1 = 0; i1 < arraylist.size(); i1++) { 
    string.append(arraylist.get(i1).toString()); 
} 

或者這樣:

StringBuilder string = new StringBuilder(); 
for (Object str : arraylist) { 
    string.append(str.toString()); 
} 
0

如果您在使用任何類型的對象,那麼你必須重寫toString()方法。並提供要在其中添加String的String。

相關問題