从用户输入创建动态对象
Dynamic object creation from user input
我有两个 类,包含一些基本信息的 Student
,以及包含一些基本信息的 Course
和 ArrayList
个 Student
对象.我想动态地(根据用户输入)填充 类 的新实例。例如,系统会提示用户输入课程名称、教师,并询问他们是否要将学生添加到课程中。完成课程和所有学生的信息后,循环返回到要求添加另一门课程。
我所做的是,创建一个 Course
对象,然后添加学生。我通过在使用 courseInstance.addStudent(new Student(name, age, phone))
收集用户 unput 后创建它们来管理 Student
对象。对于一门课程来说一切都很好,但是我如何管理从输入动态创建的多个课程对象?
这是一个代码示例:
public static void main(String[] args) {
// TODO code application logic here
Course course = new Course();
Scanner in = new Scanner(System.in);
String ans;
String name;
String gender;
String phone;
int age;
System.out.print("Enter course name: ");
ans = in.nextLine();
course.setName(ans);
System.out.print("Enter teacher name: ");
ans = in.nextLine();
course.setTeacher(ans);
while (true) {
System.out.print("Add student (yes or exit): ");
ans = in.nextLine();
if (ans.equals("exit")) {
break;
}
System.out.print("Enter name: ");
name = in.nextLine();
System.out.print("Enter age: ");
age = in.nextInt();
in.nextLine();
System.out.print("Enter gender: ");
gender = in.nextLine();
System.out.print("Enter phone number: ");
phone = in.nextLine();
course.addStudent(new Student(age, name, phone, gender));
}
in.close();
System.out.print(course);
}
有一个包含 Course
个对象的列表,并询问(在您的 while(true)
循环中)每个学生注册的课程如何?
创建一个列表,您可以在其中填充这样的课程:
ArrayList<Course> courses = new ArrayList<Course>();
当学生输入课程名称时,检查该课程是否存在于数组中。如果不是,则将其添加到数组中,否则从数组中获取并添加学生。
由于名称似乎是识别课程的主要属性,您当然应该覆盖 equals(Object o) 方法,以便它比较课程的两个名称。
public boolean equals(Object o){
return this.getName().equals((Course)o.getName());
}
然后你可以简单地有一个列表来存储你的课程并询问列表是否包含特定课程。如果没有,您可以将其添加到列表中,否则您可以将学生或教师添加到现有课程中。
编辑:两门课程都应该是 getName()
我有两个 类,包含一些基本信息的 Student
,以及包含一些基本信息的 Course
和 ArrayList
个 Student
对象.我想动态地(根据用户输入)填充 类 的新实例。例如,系统会提示用户输入课程名称、教师,并询问他们是否要将学生添加到课程中。完成课程和所有学生的信息后,循环返回到要求添加另一门课程。
我所做的是,创建一个 Course
对象,然后添加学生。我通过在使用 courseInstance.addStudent(new Student(name, age, phone))
收集用户 unput 后创建它们来管理 Student
对象。对于一门课程来说一切都很好,但是我如何管理从输入动态创建的多个课程对象?
这是一个代码示例:
public static void main(String[] args) {
// TODO code application logic here
Course course = new Course();
Scanner in = new Scanner(System.in);
String ans;
String name;
String gender;
String phone;
int age;
System.out.print("Enter course name: ");
ans = in.nextLine();
course.setName(ans);
System.out.print("Enter teacher name: ");
ans = in.nextLine();
course.setTeacher(ans);
while (true) {
System.out.print("Add student (yes or exit): ");
ans = in.nextLine();
if (ans.equals("exit")) {
break;
}
System.out.print("Enter name: ");
name = in.nextLine();
System.out.print("Enter age: ");
age = in.nextInt();
in.nextLine();
System.out.print("Enter gender: ");
gender = in.nextLine();
System.out.print("Enter phone number: ");
phone = in.nextLine();
course.addStudent(new Student(age, name, phone, gender));
}
in.close();
System.out.print(course);
}
有一个包含 Course
个对象的列表,并询问(在您的 while(true)
循环中)每个学生注册的课程如何?
创建一个列表,您可以在其中填充这样的课程:
ArrayList<Course> courses = new ArrayList<Course>();
当学生输入课程名称时,检查该课程是否存在于数组中。如果不是,则将其添加到数组中,否则从数组中获取并添加学生。
由于名称似乎是识别课程的主要属性,您当然应该覆盖 equals(Object o) 方法,以便它比较课程的两个名称。
public boolean equals(Object o){
return this.getName().equals((Course)o.getName());
}
然后你可以简单地有一个列表来存储你的课程并询问列表是否包含特定课程。如果没有,您可以将其添加到列表中,否则您可以将学生或教师添加到现有课程中。 编辑:两门课程都应该是 getName()