2016-04-14 9 views
0

Birden çok giriş içeren Arraylist de dahil olmak üzere çok fazla şey yazdırması gereken bir toString var. Bu girişlerin yeni bir satırla ayrılması gerekiyor. İşte şu an ile çalışıyorum toString kodudur:Her bir girişi ayıran çizgilerle toString'de bir Arraylist yazdırma

@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; 
    } 

liste yapar baskı, ancak girişlerin tüm parantez ve virgül ile aynı hat üzerinde bulunmaktadır.

Eğitmenim, toString'in kendi içinde yer alması gerektiğinde ısrar ediyor, bu yüzden toString'de sahip olduğum her şeyin şu anda orada kalması gerekiyor. Böyle

liste baskılar: Şu

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

, ben şöyle bir sonuç alırsınız:

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] 

Ama böyle bakmak istiyorum:

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 

Her türlü öneri çok takdir edilecektir. Teşekkürler!

+0

Yani şu anda [ "şey", "başka bir şey", "biraz daha"] '' gibi yazdırır, ancak ' "şey"" gibi yazdırmak istediğiniz Başka bir şey "" biraz daha "" yerine? (böylece kare köşeli ayraçlar ve virgüller boşluklarla değiştirilmez? Sorunu daha net bir hale getirmek için mevcut çıktıyı ve istenen çıktının bir örneğini ekleyebilir misiniz? –

+0

Halihazırda nasıl yazdırdığını ve nasıl yazdırılmasını istediğinizi gösterebilir – dambros

+0

ArrayList'in toString() uygulamasını kullanarak (bir String'e liste ekleyerek), neden ilk toString() uygulamasında liste boyunca yineleme yapmıyorsunuz ve her öğrenci öğesinin her birinde toString() öğesini çağırıyorsunuz ve her birinden sonra yeni bir satır yazdırıyorsunuz – Madhusudhan

cevap

4

bu deneyin aşağıdaki gibi StringBuilder sınıfını kullanarak önermek:

@Override 
public String toString() { 
    StringBuilder sb = new StringBuilder(); 

    //You haven't provided much info about your ArrayList, customise this accordingly 
    for (Object o : ArrayList<Object>) { 
     sb.append(o.toString() + " "); 
    } 

    sb.setLength(sb.length() - 1); 

    return getCourseId() + "\n" + getCourseName() + "\n" + getCourseCode() 
     + "\n" + "\n" + "Instructor" + "\n" + "-------------------------" 
     + "\n" + Instructor.toString() + "\n" + "\n" + "Student Roster" 
     + "\n" + "-------------------------" + "\n" + sb.toString(); 
} 
1

Sana soruyorsun tam olarak ne olduğundan emin değilim sonra isim listesindeki her değer için dize almak ve olacaktır

String rosterStr = roster.stream() 
     .map(r -> r.toString()) 
     .collect(Collectors.joining("\n")) 

yenisatırlar ile onlara katılmak, ama isterim: