Java--从main调用的Object数组的字符串表示形式

时间:2017-06-25 13:34:08

标签: java arrays

首先,如果我不知道如何正确解释我的问题以及标题是否完全正确或不够清楚,我很抱歉。这是我的第一篇stackoverflow帖子。我将尝试用例子来解释我的初学者问题:

我有以下学生班:

public class Student {
    private String name;
    private int matrikelnummer;
    public static int STUDENT_COUNT;

    public Student(String name, int matrikelnummer){
        this.name = name;
        this.matrikelnummer = matrikelnummer;
        STUDENT_COUNT++;
    }

    public String toString() {
        return "Student Nr.: " +matrikelnummer+" Name: "+name;
    }
}

和另一堂课Tutorium:

public class Tutorium {
    private int raumNr;
    private String tutor;
    private String fach;
    private Student[] teilnehmer;

    public Tutorium(int kapazitaet, int raumNr, String tutor, String fach) {
        this.raumNr = raumNr;
        this.tutor = tutor;
        this.fach = fach;
        teilnehmer = new Student[kapazitaet];
    }

    public String toString() {
        if (teilnehmer == null) {
            return "Noch keine Teilnehmer";
        }

        String out = "Tutorium " + fach + " Bei " + tutor + " in " + raumNr + " " + "\n";

        return out + --- ; //here i want to print all array element from teilnehmer
    }
} 

例如,如果有以下主要:

public class TutoriumsVerwaltung {
    public static void main(String[] args) {
        //Studenten und Tutorien erzeugen.
        Student[] studs = {new Student("Tim", 333333),
                new Student("Anna", 444444),
                new Student("Lisa", 345987),
                new Student("Karl", 336292),
                new Student("Elisabeth", 999999)};
        Tutorium[] tuts = {new Tutorium(5, 6057, "Tobias", "PPR-J"),
                new Tutorium(2, 6057, "Roland", "PPR-C"),
                new Tutorium(9, 6051, "Max", "PPR-J")};
        //Infos ueber Tutorien und Studenten ausgeben.
        System.out.println("Es gibt "+Student.STUDENT_COUNT+" Studenten.");
        for (Student student : studs)
            System.out.println(student);
        for (Tutorium tutorium : tuts)
            System.out.println(tutorium);
        System.out.println("");

我希望来自Tutorium的toString()方法以下列格式打印:

Tutorium PPR−J bei Tobias in Raum 6057

Teilnehmer:

Student Nr.: 333333 Name: Tim

Student Nr.: 444444 Name: Anna

Student Nr.: 345987 Name: Lisa

我尝试过创建getter / setter(可能不正确?)但没有成功。有人会在乎解释我的问题和解决方法。

3 个答案:

答案 0 :(得分:0)

你想要的是基本上从集合中获取每个元素(在这种情况下是数组)。您可以使用for-loop轻松实现此目的。

代码:

for(Student student : teilnehmer) {

    // If an array isn't full it contains null elements.
    if (student != null) {
        out += student.toString() + "\n"; // '\n' means newline
    }
}

答案 1 :(得分:0)

修改此代码:

public String toString() {
    if (teilnehmer == null) {
        return "Noch keine Teilnehmer";
    }
    String out = "Tutorium " + fach + " Bei " + tutor + " in " + raumNr + " " + "\n";



    return out + --- ; //here i want to print all array element from teilnehmer
} 

@Override
public String toString() {
// if (teilnehmer == null) {
// return "Noch keine Teilnehmer";
// }
String out = "Tutorium " + fach + " Bei " + tutor + " in " + raumNr + " " + "\n";
return out + Arrays.toString(teilnehmer);
}

请注意,我注释掉了这个(teilnehmer == null),因为这个条件永远不会满足,你在构造函数中创建一个实例,所以teilmehmer永远不会为null

你需要设置Teilnehmer:

public static void main(String[] args) {
// Studenten und Tutorien erzeugen.
Student[] studs = { new Student("Tim", 333333), new Student("Anna", 444444), new Student("Lisa", 345987),
    new Student("Karl", 336292), new Student("Elisabeth", 999999) };
Tutorium[] tuts = { new Tutorium(5, 6057, "Tobias", "PPR-J"), new Tutorium(2, 6057, "Roland", "PPR-C"),
    new Tutorium(9, 6051, "Max", "PPR-J") };
// Infos ueber Tutorien und Studenten ausgeben.
System.out.println("Es gibt " + Student.STUDENT_COUNT + " Studenten.");
//here set the array
for (Tutorium tutorium : tuts) {
    tutorium.setTeilnehmer(studs);
}
for (Student student : studs)
    System.out.println(student);
for (Tutorium tutorium : tuts)
    System.out.println(tutorium);
System.out.println("");
}

并定义setter:

public void setTeilnehmer(Student[] teilnehmer) {
    this.teilnehmer = teilnehmer;
}

答案 2 :(得分:0)

也许你可以在Student-class和TutoriumsVerwaltung-class中尝试覆盖toString-method。