【问题标题】:Printing an Arraylist in toString with new lines separating each entry在 toString 中打印一个 Arraylist,并用新行分隔每个条目
【发布时间】:2016-04-16 01:08:03
【问题描述】:

我有一个 toString 需要打印很多东西,包括一个包含多个条目的 Arraylist。这些条目必须用新行分隔。这是我现在正在使用的 toString 代码:

@Override
public String toString() // Displays the info for a class
{            
    return getCourseId() + "\n" + getCourseName() + "\n" + getCourseCode()
        + "\n" + "\n" + "Instructor" + "\n" + "-------------------------" 
        + "\n" + Instructor.toString() + "\n" + "\n" + "Student Roster" 
        + "\n" + "-------------------------" + "\n" + roster;
}

名册会打印出来,但所有条目都存在于同一行,带有括号和逗号。

我的导师坚持 toString 是独立的,所以我目前在 toString 中的所有内容都必须保留在那里。

名册打印如下:

@Override
public String toString() // Displays the info for a person in order
{
    return getPersonId() + "\t" + getLastName() + "\t" + getFirstName()
        + "\t" + getMajor() + "\t" + getGpa();
}

目前,我得到如下所示的输出:

10000
College Algebra
MATH 101

Instructor
-------------------------
X00009876   Jones   Jane    Associate Professor Mathematics

Student Roster
-------------------------
[X00000002  Smith   Sally   History         2.98, X00000003 Adams   Amanda                    Civil Engineering    3.7, X00000005  Turner  Thomas  Nursing         2.34]

但我希望它看起来像这样:

10000
College Algebra
MATH 101

Instructor
-------------------------
X00009876   Jones   Jane    Associate Professor Mathematics

Student Roster
-------------------------
X00000002   Smith   Sally   History         2.98
X00000003   Adams   Amanda     Civil Engineering    3.7
X00000005   Turner  Thomas  Nursing         2.34

任何建议将不胜感激。谢谢!

【问题讨论】:

标签: java tostring


【解决方案1】:

将此代码用于名册:

... + roster.stream().collect(Collectors.joining("\n"))

【讨论】:

    【解决方案2】:

    任意使用

    roster.stream().collect(Collectors.joining("\n"))
    

    String.join("\n", roster)
    

    【讨论】:

      【解决方案3】:

      所以,我发现了我的问题。我不得不删除 return 语句并将其放在最后,这样我就可以放置一个 for-each 循环并打印我的 Arraylist。最终代码如下所示:

      @Override
      public String toString() // Displays the info for a class
          {             
      
              System.out.print(getCourseId() + "\n" + getCourseName() + "\n" + getCourseCode()
                  + "\n" + "\n" + "Instructor" + "\n" + "-------------------------" 
                  + "\n" + Instructor.toString() + "\n" + "\n" + "Student Roster" 
                  + "\n" + "-------------------------" + "\n");
                      roster.stream().forEach((tmp) -> { // for each student, put 
                          System.out.println(tmp);       // them on a new line
          });
      
              return "";
          }
      

      【讨论】:

        猜你喜欢
        • 2016-08-06
        • 1970-01-01
        • 1970-01-01
        • 2016-08-25
        • 2015-08-16
        • 2020-11-17
        • 2015-06-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多