我有一个课程,其中包含有关课程的基本信息以及包含学生班级对象的ArrayList
有没有更聪明的方法来编辑toString()
方法,以打印出关于课程和每个学生的信息(每个单独的一行),然后这样:
public String toString() {
System.out.println("Course " + this.name + ", Teacher: " + this.teacher;
for (Student stud: studentList) {
System.out.println(stud);
}
retutn "";
我已经设置了学生班级' toString()
方法打印学生信息。
*编辑:已实现我使用print(stud)
犯了一个错误,因此将其更改为println(stud)
答案 0 :(得分:5)
System.out.println
代替System.out.print
toString
中打印内容,您应该返回一个描述性字符串。在这种情况下,您似乎想要一种方法来打印内容,因此请使用除toString
之外的其他内容。也许printCourseInfo
例如:
public void printCourseInfo() {
System.out.println("Course " + name + ", Teacher: " + teacher);
for (Student stud: studentList) {
System.out.println(stud); // Note println instead of print
}
}
奖励部分:如果你正在使用Java 8,你可以做到
studentList.forEach(System.out::println);
答案 1 :(得分:1)
答案 2 :(得分:0)
当你有toString()
方法时,你应该返回一个字符串,而不是打印出来。
由于您在这种情况下使用System.out.print
,这意味着您可能想要打印出来。因此,在for-each循环中将其更改为System.out.println
public void printCourseInfo() {
System.out.println("Course " + name + ", Teacher: " + teacher);
for (Student stud: studentList) {
System.out.println(stud);
}
}
答案 3 :(得分:0)
其他人提到你不应该真正重新调整toString()。 相反,你应该实现像'getAsPrettyString()'等方法。 如果你很懒(像我一样),你可能想要使用这样的东西:
import java.util.List;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
public class Blah {
private String hello;
private List<String>helloList;
public String getAsPrettyString() {
return ReflectionToStringBuilder.toString(this);
}
}