【发布时间】:2021-12-24 07:19:48
【问题描述】:
我为我的老师制作了一份清单并打印出来。列表打印,但问题是我的列表为列表中的所有值打印出 null。它给我的名字、姓氏、身份证和课程为空。我究竟做错了什么???我怎样才能解决这个问题?我希望能够在我的教师列表中打印出我的实际值。如果我完全诚实,我看不出有什么问题。我将名字、姓氏、身份证和课程正确添加到教师列表中。那我错过了什么????
Main.java 代码:
package SchoolSystem;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;
public class main{
public static void main(String[] args) throws InterruptedException {
int ch; //user choice
teacher teachers = new teacher();
student students = new student();
//add teachers
List<teacher> teach = new ArrayList<>();
teach.add(new teacher(teachers.first_name, teachers.last_name, teachers.teacher_id, teachers.course));
Scanner sc = new Scanner(System.in);
loop : while (true) {
//menu
System.out.println("");
System.out.println("1: Add Teacher"); //user can add a teachers name, id, and course
System.out.println("2: Add Student"); //user can add a students name, id, courses, and GPA
System.out.println("3: All Teachers"); //user can access teacher list and change items
System.out.println("4: All students"); //user can access student list and change items
System.out.println("5: Exit Program");
System.out.print("Enter your choice: ");
ch = sc.nextInt();
System.out.println("");
switch (ch) {
case 1:
System.out.println("Enter teacher's first name: ");
teachers.first_name = sc.next();
System.out.println("Enter teacher's last name: ");
teachers.last_name = sc.next();
System.out.println("Enter teacher's id: ");
teachers.teacher_id = sc.next();
System.out.println("Enter teacher's course: ");
teachers.course = sc.next();
break;
case 2:
System.out.println("Enter student's first name: ");
students.first_name = sc.next();
System.out.println("Enter student's last name: ");
students.last_name = sc.next();
System.out.println("Enter student's id: ");
students.student_id = sc.next();
System.out.println("Enter student's course: ");
students.course = sc.next();
break;
case 3:
System.out.println("-----------------------------------------------------------------------------");
System.out.printf("%1s %20s %5s %5s", "FIRSTNAME", "LASTNAME", "ID", "COURSE");
System.out.println();
System.out.println("-----------------------------------------------------------------------------");
for(teacher teacher: teach){
System.out.format("%1s %20s %5s %5s",
teacher.getFirstName(), teacher.getLastName(), teacher.getId(), teacher.getCourse());
System.out.println();
}
System.out.println("-----------------------------------------------------------------------------");
break;
case 4:
//null
break;
case 5:
/*
System.out.println("Exiting Program....");
TimeUnit.SECONDS.sleep(3);
System.out.println("Goodbye!");
break loop;
*/
break;
default:
//System.out.println("Invalid choice! Please enter an option (1 - 5)");
}
}
}
}
Teacher.java 代码:
package SchoolSystem;
public class teacher {
public teacher() {
//null
}
public String first_name;
public String last_name;
public String teacher_id;
public String course;
public teacher(String first_name, String last_name, String teacher_id, String course) {
this.first_name = first_name;
this.last_name = last_name;
this.teacher_id = teacher_id;
this.course = course;
}
//return firstname
public String getFirstName() {
return first_name;
}
//return lastname
public String getLastName() {
return last_name;
}
//return teacherId
public String getId() {
return teacher_id;
}
//return course
public String getCourse() {
return course;
}
}
【问题讨论】:
-
您要做的第一件事是使用未初始化的“教师”添加教师。稍后您更新该教师的单个实例;您的下一个问题将是列表中的所有教师都有相同的数据。
-
它应该来自列表“teach”
-
我该如何解决这个问题?抱歉,我是 Java 新手...我将不胜感激 :)