当前位置: 首页 > 知识库问答 >
问题:

基于用户输入创建学生数组

云煌
2023-03-14

我试图创建一个基于用户输入的数学学生、科学学生和计算机学生的数组。

所以基本上用户应该选择他们想要添加的学生,然后输入学生详细信息。

下面我添加了我到目前为止的代码

public class Lab4 {
    public static final int DEBUG = 0;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Student s[] = new Student[10];
        s[0] = new MathStudent(4,5);
        s[1] = new MathStudent(5,7);
        s[2] = new MathStudent(2,8);
        s[3] = new MathStudent(3,6);
        s[4] = new ScienceStudent(8,9);
        s[5] = new ScienceStudent(3,6);
        s[6] = new ScienceStudent(4,9);
        s[7] = new ComputerStudent(6,12);
        s[8] = new ComputerStudent(11,14);
        s[9] = new ComputerStudent(13,17);
    }

}
public class Student {
    private String name;
    private int age;
    public String gender = "na";
    public static int instances = 0;

    // Getters
    public int getAge(){
        return this.age;
    }
    public  String getName(){
        return this.name;
    }

    // Setters
    public void setAge(int age){
        this.age = age;
    }
    public void setName(String name){
        if (Lab4.DEBUG > 3) System.out.println("In Student.setName. Name = "+ name);
        this.name = name;
    }

    /**
     * Default constructor. Populates name,age,gender,course and phone Number 
     * with defaults
     */
    public Student(){
        instances++;
        this.age = 18;
        this.name = "Not Set";
        this.gender = "Not Set";
    }

    /** 
     * Constructor with parameters 
     * @param age integer
     * @param name String with the name
    */
    public Student(int age, String name){
        this.age = age;
        this.name = name;
    }

    /** 
     * Gender constructor
     * @param gender 
     */
    public Student(String gender){
        this(); // Must be the first line!
        this.gender = gender;

    }

    /**
     * Destructor
     * @throws Throwable 
     */
    protected void finalize() throws Throwable{
        //do finalization here
        instances--;
        super.finalize(); //not necessary if extending Object.
    } 

    public String toString (){
        return "Name: " + this.name + " Age: " + this.age + " Gender: " 
               + this.gender;
    }

    public String getSubjects(){
      return this.getSubjects();
    }
}
public class MathStudent extends Student {
    private float algebraGrade;
    private float calculusGrade;

    public MathStudent(float algebraGrade, float calculusGrade) {
        this.algebraGrade = algebraGrade;
        this.calculusGrade = calculusGrade;
    }

    public MathStudent() {
        super();
        algebraGrade = 6;
        calculusGrade = 4;
    }

    // Getters
    public void setAlgebraGrade(float algebraGrade){
        this.algebraGrade = algebraGrade;
    }
    public void setCalculusGrade(float calculusGrade){
        this.calculusGrade = calculusGrade;
    }

    // Setters
    public float getAlgebraGrade() {
        return this.algebraGrade;
    }
    public float getCalculusGrade() {
        return this.calculusGrade;
    }

    /**
     * Display information about the subject
     * @return 
     */
    @Override
    public String getSubjects(){
        return("Algebra Grade: " + algebraGrade + " Calculus Grade: " 
                + calculusGrade);
    }
}
public class ScienceStudent extends Student {
    private float physicsGrade;
    private float astronomyGrade;

    /**
     * Default constructor
     */
    public ScienceStudent() {
        super();
        physicsGrade = 6;
        astronomyGrade = 7;
    }

    public ScienceStudent(float physicsGrade, float astronomyGrade) {
        this.physicsGrade = physicsGrade;
        this.astronomyGrade = astronomyGrade;
    }

    // Getters
    public void setPhysicsGrade(float physicsGrade){
        this.physicsGrade = physicsGrade;
    }
    public void setAstronomyGrade(float astronomyGrade){
        this.astronomyGrade = astronomyGrade;
    }

    // Setters
    public float getPhysicsGrade() {
        return this.physicsGrade;
    }
    public float getAstronomyGrade() {
        return this.astronomyGrade;
    }

    /**
     * Display information about the subject
     * @return 
     */
     @Override
    public String getSubjects(){
        return("Physics Grade: " + physicsGrade + " Astronomy Grade: " 
                + astronomyGrade);
    } 
}

计算机学生班:

public class ComputerStudent extends Student {
    private float fortanGrade;
    private float adaGrade;

    /**
     * Default constructor
     */
    public ComputerStudent() {
        super();
        fortanGrade = 4;
        adaGrade = 9;
    }

    public ComputerStudent(float fortanGrade, float adaGrade) {
        this.fortanGrade = fortanGrade;
        this.adaGrade = adaGrade;
    }

    // Getters
    public void setFortanGrade(float fortanGrade){
        this.fortanGrade = fortanGrade;
    }
    public void setAdaGrade(float adaGrade){
        this.adaGrade = adaGrade;
    }

    // Setters
    public float getFortanGrade() {
        return this.fortanGrade;
    }
    public float getAdaGrade() {
        return this.adaGrade;
    }

    /**
     * Display information about the subject
     * @return 
     */
    @Override
    public String getSubjects(){
        return("Fortan Grade: " + fortanGrade + " Ada Grade: " + adaGrade); 
    }
}

我该怎么做?

共有1个答案

何高旻
2023-03-14

您可以在每个输入上询问具有type的学生数,并动态创建对象。这里有一个例子

System.out.println("Enter total number of students");
int n = scannerObject.nextInt();
Student students[] = new Students[n];
for(int i=0;i<n;i++){
  int type = scannerObject.nextInt();
  if(type == 1)
   students[i] = new MathStudent();
}

同样,你也可以为别人写作。

 类似资料:
  • 问题内容: 我正在尝试 使用用户输入 创建一个 新对象。 我尝试将用户输入分配给变量,但是在声明新对象时 不知道如何将变量添加 到新对象。这只是我需要帮助的代码部分。我需要帮助的部分是 第8行。 我知道我可以随意放置一些内容,当我使用set方法时,它将覆盖,但这不是我想要的。先感谢您 问题答案: 这取决于类的实现方式。如果Expects 参数的构造函数,则调用传递它们而不指定类型的构造函数。 请注

  • 我正在寻找一个随机数生成器,我可以创建一个种子,并采取两个输入x和y来生成数字。每次使用相同的输入和相同的种子时,我都需要相同的数字。 我正在使用这个来随机分配一个坐标网格上的纹理,所以我需要它每次都是一样的。所以每次我在x=100,y=120的时候,在同一个种子里,我需要相同的随机数,所以相同的纹理被分配在那个点上。

  • 我需要取一个int数组并将其转换为BufferImage。我在这个问题上没有任何背景知识,我都是从互联网上学习的,所以下面是我要做的:从BufferedImage创建一个数组(完成),将这个数组转换为IntBuffer(完成)-(稍后我需要通过IntBuffer对图像执行一些操作),将IntBuffer中更改的值放入新数组(完成),并将这个数组转换为WritableRaster。(如果我对这个过程

  • 我在项目中有以下课程: 账户 客户 名称:fName和lName(都是字符串字段) 日期:年、月、日(均为整数字段) 银行:包含账户收款 InputReader:从键盘读取输入 账户对象需要客户对象和期初余额。客户对象需要名称对象和日期对象。Name对象需要名字和姓氏的字符串我需要向用户询问创建Name和Date对象的详细信息,以及期初余额。 我必须通过从用户那里获取相关信息来创建一个新帐户,即它

  • 问题内容: 嗨,我正在尝试创建一个程序来在用户为某个对象输入新信息时创建一个新对象。目前我有这个。 电脑超一流 桌面子类 笔记本电脑子类 因此,有一个班级和两个子班级,但我认为这并不重要。因此,如果我输入1,则应该为Desktop创建一个新对象,如果我输入2,则将为Laptop创建一个新对象。当我输入3时,它应该显示所有创建的对象。我不知道如何让他们工作,请帮助。 问题答案: 使用您提供的限制信息

  • 我试图为Java中的abject数组获取用户输入。但它工作不正常。我创建了第一个类并声明了所有属性,还创建了构造函数、geter和seter。但是当我在数组中保存对象时,它不能正常工作