将数组列表转换为单个字符串

时间:2012-09-11 14:19:48

标签: java arrays string list compilation

我正在为我正在做的作业编写一段代码,而且我完全陷入了一点点。

我需要将数组列表的内容转换为字符串或字符串形式,这样就可以将其输入到toString()中,以便将其打印到屏幕上。

public String toString(){
    String full;
    full = (this.name + this.address + "\n" + "Student Number = " + this.studentId);
    for (int i = 0; i < cs.size(); i++) {
        full.append(cs[i]);
    return full;

以上代码是我尝试将3个变量和数组列表的内容组合成一个带格式的字符串。

不幸的是它会产生错误“表达式的类型必须是数组类型,但它已解析为ArrayList”

感谢您的帮助。

杰克

6 个答案:

答案 0 :(得分:5)

cs是数组列表,所以你必须做get操作,而不是[](用于数组访问)

应该是这样的:

full.append(cs.get(i));

full.append(cs[i]);

编辑:正如assylis所说,full应该是StringBuilder,而不仅仅是String,因为String不支持append()方法。

StringBuilder full = new StringBuilder();

答案 1 :(得分:2)

您正在尝试访问ArrayList,就好像它是一个基本数组(使用索引周围的方括号)。请尝试使用get(int index)方法。

即,

cs.get(i);

答案 2 :(得分:2)

Apache Commons StringUtils有不同种类的join()方法,这意味着您不必自己编写。您可以指定分隔符甚至前缀/后缀。

我建议你看一下Apache Commons,不仅仅是为了这个,还有很多其他有用的东西。

答案 3 :(得分:0)

您不能像数组一样索引ArrayList,您需要get(index)方法。更好的是,使用增强的for循环,因为不建议对列表进行索引,因为实现可能会更改为LinkedList

我还建议使用StringBuilder来提高效率:

public String toString() {
    StringBuilder full = new StringBuilder();
    full.append(this.name);
    full.append(this.address);
    full.append("\n");
    full.append("Student Number = ");
    full.append(this.studentId);
    for (String s: cs)
        full.append(s);
    return full.toString();
}

答案 4 :(得分:0)

只需使用 “cs.get(i)”代替“cs [i]”。 因为cs是一个ArrayList而不是一个数组。

并且也使用 full = full + cs.get(i);而不是full.append(cs.get(i));

as String类型没有append方法。

答案 5 :(得分:0)

请注意,由于您未在ArrayList的每个元素之间放置任何间隔符,因此可能无法读取。考虑使用Guava的Joiner类。

所以而不是

 for (...)
   s.append(y);

如果是

   a.append(Joiner.on(" ").join(yourList));

Joiner也比for循环更有效,因为它在内部使用StringBuilder