我正在为我正在做的作业编写一段代码,而且我完全陷入了一点点。
我需要将数组列表的内容转换为字符串或字符串形式,这样就可以将其输入到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”
感谢您的帮助。
杰克
答案 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
。