我试图弄清楚如何访问Student Array
类,以便为每个Student
对象创建四个条目,但是我不确定如何做到这一点,同时也允许程序来创建多个Student
。
public class ClassRoster<T> {
public static void main(String[]args) {
ClassRoster<Student> classroster = new ClassRoster<Student>();
Scanner keyboard = new Scanner(System.in);
System.out.println("Add/Drop/Search?");
String action = keyboard.nextLine();
boolean done = false;
Object temp, c, d, e;
int fresh, soph, jun, sen;
Student test = new Student();
while(!done) {
if(action.equalsIgnoreCase("Add"))
{
int counter = 0;
System.out.print("Enter Student ID");
temp = test.setID(keyboard.nextInt());
System.out.println("First name?");
c = test.setFirstName(keyboard.nextLine());
System.out.println("Last name?");
d = test.setLastName(keyboard.nextLine());
System.out.println("Academic Level?");
e = test.setLevel(keyboard.nextLine());
...
}
我还有一个名为Student
的课程,其中有四个不同的数据条目(ID,名字,姓氏,学术水平)。
我不确定如何访问以正确方式创建的对象。这只是给我一个Driver
类错误,而且我不知道如何正确访问数组包。
答案 0 :(得分:0)
但是我不确定该怎么做,同时还允许该程序创建一个以上的学生
当前,您仅使用Student test = new Student();
创建一个学生的特定实例。要实际创建一个以上的学生,您将不得不遍历读取所有四个数据条目(ID,FirstName,LastName,Academic Level)的整个过程)。我建议您不必让Student类使用类构造函数对其进行初始化,而不必使用特定的set方法来初始化字段(您的四个数据条目)。意味着Student类应该看起来像这样:
public class Student{
private final int ID;
private final String firstname;
private final String lastname;
private String level;
public Student(int ID, String firstname, String lastname, String level){
this.ID = ID;
this.firstname = firstname;
this.lastname = lastname;
this.level = level;
}
ID,名字和姓氏将设置为最终名称,因为您预计它们不会更改。但是,学术水平应该改变,因此不能设置为最终水平。现在,您已经为学生类设置了一个构造函数,我们可以了解如何允许该程序一次插入多个学生。
public static void main(String[]args) {
ClassRoster<Student> classroster = new ClassRoster<Student>();
Scanner keyboard = new Scanner(System.in);
System.out.println("Add/Drop/Search?");
String action = keyboard.nextLine();
boolean done = false;
while(!done) {
if(action.equalsIgnoreCase("Add")) {
System.out.print("Enter Student ID");
int ID = keyboard.nextInt();
System.out.println("First name?");
String firstname = keyboard.nextLine();
System.out.println("Last name?");
String lastname = keyboard.nextLine();
System.out.println("Academic Level?");
String level = keyboard.nextLine();
Student student = new Student(ID, firstname, lastname, level);
//we have now created a new instance of Student, now we have to save it in your classroster
classroster.add(student);
}
System.out.println("Next action?");
action = keyboard.nextLine();
if(action.equals("done") done = true; //if you write 'done', your loop will finish executing
}
我不知道您对classroster的实现,但是我认为您已经使用某种列表或映射实现了它,这就是为什么在创建Student实例之后调用add(Student s)方法的原因。要实际访问所有学生,您将必须在classroster中实现一个方法,该方法返回已保存的classroster列表,然后在主循环中遍历返回的列表。要真正看到学生的样子,您还必须实现学生实例的方法,例如打印出他们的全名。
我看到您在数组,地图和列表上遇到了一些麻烦,因为您还不知道如何访问学生。我建议您阅读这三种数据结构类型之间的区别,并尝试在一个小示例中尝试实现它们,以了解它们如何工作。