1

我对java很陌生,我不确定我需要使用什么来实现我的目标......或者我不知道如何在谷歌或stackoverflow上搜索它......

假设我有一个学生班级,它有一种方法来获取/设置他们的名字和专业。我还有另一个专业类,我可以创建一个实例并将属于该专业的学生添加到 ArrayList 中。

我有一个扫描仪,以便学生可以输入他们的详细信息......

我会在我的学生课上这样写,主要是:

    package exp;
import java.util.Scanner;
public class Student {

    private String name, major;
    private int id;

    public Student(){
    }
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void setMajor(String major){
        this.major = major;
    }
    public String getMajor(){
        return major;
    }    
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        Student student1 = new Student();
        System.out.println("Enter name: ");
        student1.setName(scan.next());
        System.out.println("Enter major: ");
        student1.setMajor(scan.next());


        Major major1 = new Major();
        major1.addStudents(student1);
        System.out.println("List of students in major1: ");
        major1.getStudents(); 
    }
}

在我的专业课上:

package exp;
import java.util.ArrayList;
public class Major {

private ArrayList<Student> students;

public Major(){
    students = new ArrayList<Student>();
}

public void addStudents(Student insertStudent){
    students.add(insertStudent);
}
public void getStudents(){
    for(Student student: students){
        System.out.println(student.getName());
    }
}

}

我知道这很好用...学生填写他们的详细信息...但是如果有 1000 或未知数量的学生怎么办?我们如何创建新实例而不是在主“Student student2 = new Student();”中手动创建 等等......还有我们如何将学生的实例添加到他们所属的专业的实例中?

非常感谢你!

4

4 回答 4

3

您可以简单地将大部分 main 方法放在一个 while(true) 循环中,该循环将永远循环,直到用户输入一些标记值(“输入 0 退出”)。当他们输入“0”时,跳出循环:

if(scan.nextLine().equals("0")){ break; }

希望有帮助!

于 2012-11-18T02:01:57.090 回答
1

只需使用一个while循环

Scanner scan = new Scanner(System.in);
while(true)
{
        Student student = new Student();
        System.out.println("Enter name: ");
        student.setName(scan.next());
        System.out.println("Enter major: ");
        student.setMajor(scan.next());
        System.out.println("Do you wish to continue [Y/N] ?");
        if(scan.next().equalsIgnoreCase("N"))
        {
            break;
        }   
}
于 2012-11-18T02:03:37.737 回答
0

一旦student1添加到ArrayList,您可以删除它的引用,给它一个新的Student对象值。

于 2012-11-18T02:03:47.007 回答
0

首先,当您设置专业时,请使用 major1 变量,并将 Student 类的专业属性设为“专业”

从少校的声明开始

使用循环填充所有内容

Major major1 = new Major();

while(true) {
    Student temp = new Student();
    System.out.println("please enter your name...");
    temp.setName(scan.next());
    System.out.println("Please enter the name of your major.");
    Major majTemp = null;
    while(majTemp == null) majTemp = getMajorPerName(scan.next());
    temp.setMajor(majTemp);
    majTemp.addStudent(temp.getName());
}
于 2012-11-18T02:09:33.073 回答