2012-03-20 42 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。

相关问题