簡體   English   中英

在toString中打印一個Arraylist,並用新行分隔每個條目

[英]Printing an Arraylist in toString with new lines separating each entry

我有一個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

任何建議將不勝感激。 謝謝!

將此代碼用於花名冊:

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

無論使用

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

要么

String.join("\n", roster)

所以,我想出了我的問題。 我必須刪除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 "";
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM