java - 将 2 个列表一起打印

标签 java list class

我正在尝试使用 University 类从 Student 类中打印 StudentList

大学类(class)代码:

public class University {
    Unit[] units = new Unit[3];
    Student student1;
    Student student2;
    Student student3;


public void printStatus() {
    System.out.println("Welcome to Java University");
    System.out.println();
    createUnits();
    displayUnits();
    System.out.println("Thank you for using Java University");
}
public void createUnits() {
    units[0] = new Unit("FIT1234", "Advance Bogosorts");
    student1 = new Student(1234, "Mark", "Stevens");
    student2 = new Student(5678, "Steven", "Perry");
    units[1] = new Unit("FIT2345", "Java Programming");
    student3 = new Student(9012, "Cooper", "Smith");
    units[2] = new Unit("FIT3456"," Java Fundamentals");

}

public void displayUnits() {
    for (int i =0; i<units.length; i++) {
        System.out.println(units[i].description());
    System.out.println(student1.description());
    System.out.println(student2.description());
    System.out.println(student3.description());
        }
    }

}

学生列表代码:

import java.util.ArrayList;
import java.util.List;

public class Unit {
    private String unitcode;
    private String unitname;


public Unit(String x,String y) {
    unitcode = x;
    unitname = y;

}
private final List<Student> studentList = new ArrayList<>();

public boolean addStudents(Student newStudents){
        studentList.add(newStudents);
        return true;

}

public String description() {
        return unitcode + " " + unitname;
        }


}

我得到的输出

    Welcome to Java University
    FIT1234 Advance Bogosorts
    1234 Mark Stevens
    5678 Steven Perry
    9012 Cooper Smith
    FIT2345 Java Programming
    1234 Mark Stevens
    5678 Steven Perry
    9012 Cooper Smith
    FIT3456  Java Fundamentals
    1234 Mark Stevens
    5678 Steven Perry
    9012 Cooper Smith
    Thank you for using Java University

我想要的输出

Welcome to Java University
FIT1234 Advance Bogosorts
1234 Mark Stevens
5678 Steven Perry
FIT2345 Java Programming
9012 Cooper Smith
FIT3456  Java Fundamentals
Thank you for using Java University

我不明白我做错了什么。我制作了一个学生列表并将每个学生添加到列表中,但我没有得到正确的输出。我是否应该将学生添加到单元列表中,以便每个学生都注册到一个单元中,或者我是否以错误的顺序打印?谁能给我一个解决方案吗?

最佳答案

您可以修改方法 displayUnits 以仅打印在给定类(class)中注册的学生:

public void displayUnits() {
    for (int i =0; i<units.length; i++) {
        System.out.println(units[i].description());

        for (Student student: units[i].getStudents()) {
            System.out.println(student.description());
        }  
    }
}

要实现这一目标,您需要

1) 在类 Unit 中添加 getter 方法:

public class Unit {
   ...
   private final List<Student> studentList = new ArrayList<>();

   public List<Student> getStudents() {
      return studentList;
   }
   ...
}

2) 填充 Unit 对象中的学生列表 - 并可能删除实例变量 student1student2 student3:

public void createUnits() {
    units[0] = new Unit("FIT1234", "Advance Bogosorts");
    units[0].studentList.add(new Student(1234, "Mark", "Stevens"));
    units[0].studentList.add(new Student(5678, "Steven", "Perry"));

    units[1] = new Unit("FIT2345", "Java Programming");
    units[1].studentList.add(new Student(9012, "Cooper", "Smith"));

    units[2] = new Unit("FIT3456"," Java Fundamentals");
}

关于java - 将 2 个列表一起打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49366336/

相关文章:

java - In Java- "Static Members of the default package cannot be imported"- 有人能解释一下这个说法吗?

Java Inventory - ADT 类和文件输入问题

python - 没有 numpy 的列表切片列表

java - 什么是java pojo类、java bean、普通类?

java - Java : Longest Ascending substring

Java 不能正确显示重音词

php 按最新的顺序列出目录文件

Java - 将单个字符串值与 ArrayList 中的所有字符串值进行比较

c++ - 在类中初始化类

C++如何在实例之间访问类成员函数