在 Java 的不同行中打印多个 ArrayList 对象

Printing multiple ArrayList objects in separate lines in Java

我有一个 class 包含关于课程的一些基本信息和一个 ArrayList 包含学生 class 的对象。
有没有更聪明的方法来编辑 toString() 方法以便打印出关于课程和每个学生的信息(每个学生在单独的一行上)然后这个:

public String toString() {
    System.out.println("Course " + this.name + ", Teacher: " + this.teacher;
    for (Student stud: studentList) {
        System.out.println(stud);
    }
    retutn "";

我已经设置了 Student class' toString() 打印学生信息的方法。

*编辑:意识到我在 print(stud) 上犯了一个错误,所以改成 println(stud)

您应该使用 System.out.println(stud) 而不是 System.out.print(stud)

"println" 的作用是在新行上打印每个学生

另请参阅 this 以了解系统

上的所有内容
  • 如果要每行打印一个学生,请使用 System.out.println 而不是 System.out.print
  • 您不应该 打印 toString 中的内容,您应该只 return 一个描述性字符串。

在这种情况下,您似乎想要一种打印内容的方法,因此请使用 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);

当你有一个 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);    
    } 
} 

其他人提到您不应该真正改变 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);
    }   
}

Using commons lang etc.