有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从main调用的对象数组的Java字符串表示形式

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

我有以下学生课程:

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

还有另一个课堂辅导:

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) 个答案

  1. # 1 楼答案

    您想要的基本上是从集合中获取每个元素(在本例中是数组)。您可以通过使用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
        }
    }
    
  2. # 2 楼答案

    也许您可以尝试在Student类和TutoriumsVerwaltung类中重写toString方法

  3. # 3 楼答案

    从以下位置修改代码:

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