简体   繁体   English

继承与多态分配

[英]Inheritance & Polymorphism Assignment

I need to write an application to display the name and ID number of each student and to calculate whether they have passed or failed. 我需要编写一个应用程序以显示每个学生的姓名和身份证号,并计算他们是否通过或失败。 I need to have 4 different classes student, studenttest, undergraduate, postgraduate. 我需要有4个不同班级的学生,学生测验,本科,研究生。

So far this is what I have: 到目前为止,这就是我所拥有的:

Student 学生

class Student {

//private data members
private long idNumber = 0;
private String name = "Not Given";
private int markForMaths = 0;
private int markForEnglish = 0;
private int markForEconomics = 0;
private int markForPhilosophy = 0;
private int markForIT = 0;


//Default constructor
public Student() {
name = "Not Given";
idNumber = 0;
markForMaths = 0;
markForEnglish = 0;
markForEconomics = 0;
markForPhilosophy = 0;
markForIT = 0;  
}

//Constructs a new Student with passed name and age parameters.
public Student(String studentName, long studentIdNumber) {
name = studentName;
idNumber = studentIdNumber;
}

    //Returns the name of student.
    public String getName( ) {
        return name;
    }

    //Returns the idNumber of student.
    public long getIdNumber( ) {
        return idNumber;
    }       

    //entermarks()
    //enter all subject marks given as args
    public void enterMarks(int maths, int english, int economics, int philosophy, int informationTechnology)
    {
    markForMaths = maths;
    markForEnglish = english;
    markForEconomics = economics;
    markForPhilosophy = philosophy;
    markForIT = informationTechnology;
    }

    //getMathsMark()
    //return mark for maths
    public int getMathsMark()
    {
    return markForMaths;
    }

    //getEnglishMark()
    //return mark for English
    public int getEnglishMark()
    {
    return markForEnglish;
    }

    //getEconomicsMark()
    //return mark for Economics
    public int getEconomicsMark()
    {
    return markForEconomics;
    }

    //getPhilosophyMark()
    //return mark for Philosophy
    public int getPhilosophyMark()
    {
    return markForPhilosophy;
    }

    //getITMark()
    //return mark for IT
    public int getITMark()
    {
    return markForIT;
    }

    //calculateAverageMark()
    //return the average of the three marks
    public double calculateAverageMark()
    {
    return ((markForMaths + markForEnglish +
    markForEconomics + markForPhilosophy + markForIT) / 3.0);
    }

    //Sets the name of student.
    public void setName(String studentName ) {
        name = studentName;
    }

    //Sets the idNumber of student.
    public void setIdNumber(long studentIdNumber ) {
        idNumber = studentIdNumber;
    }

}//end class

Undergraduate 大学本科

public class Undergarduate extends Student{



}

Postgraduate 研究生

public class Postgraduate extends Student{



}

StudentTest StudentTest

import java.util.Scanner;

public class StudentTest {

static int array;

//create method createArray
public static Student[] createArray() {

    Scanner int_input = new Scanner(System.in);

    //user enters size of array         
    System.out.print("Enter Size of Array: ");
    array = int_input.nextInt();

    Student[] array = new Student[0]; 

    //read user input as arraySize
    return new Student[5];

}//end method   

//create method populateArray
public static void populateArray(Student[] array) {

    Scanner string_input = new Scanner(System.in);
    Scanner long_input = new Scanner(System.in);
    Scanner int_input = new Scanner(System.in);

    for (int i = 0; i < 3; i++) {
        Student student = new Student(); // new student

        //set name
        System.out.println("Enter Student Name: ");
        student.setName(string_input.nextLine());

        //set ID number
        System.out.println("Enter Student ID Number: ");
        student.setIdNumber(long_input.nextLong());

        //set Marks
        System.out.println("Enter Marks");
        student.enterMarks(int_input.nextInt());

        //put new student into array passed to the method
        array[i] = student; 

    }//end for loop                         
}//end method

//create method display Array
public static void displayArray(Student[] array){
    System.out.println("Array Contents");

    for (Student s : array) {

        System.out.println(String.format("%s %d", s.getName(), 
                s.getIdNumber(), s.getEnglishMark(), s.getMathsMark(), 
                s.getEconomicsMark(), s.getPhilosophyMark(), s.getITMark(),
                s.calculateAverageMark()));

    }//end for loop
}//end method

public static void main(String [] args) {
    // create array of size specified by user
    Student[] students = createArray();

    //populate this array with data from user
    populateArray(students);

    //display array contents
    displayArray(students);    

}//end main method
}//end class

I keep getting an error in the studenttest on the line 我在网上的学生考试中不断出错

student.enterMarks(int_input.nextInt());

the error reads: 该错误显示为:

The method enterMarks(int, int, int, int, int, int) in the type Student is not applicable for the arguments (int) Student类型的方法enterMarks(int,int,int,int,int,int)不适用于参数(int)

As your class Student expects marks for each subject (english, maths, etc..), change your StudentTest class so that it passes each and every subject as input to enterMarks method. 当您的班级学生期望每个科目的成绩(英语,数学等)时,请更改StudentTest类,以使其将每个科目作为enterMarks方法的输入。

Change your method call from: 从以下位置更改方法调用:

student.enterMarks(int_input.nextInt());

TO

student.enterMarks(int_input.nextInt(), int_input.nextInt(), int_input.nextInt(), int_input.nextInt(), int_input.nextInt(), int_input.nextInt());//to make it more readable and usable, first take input from keyboard by asking user to enter the number, assign to individual marks variable and then pass it to the method.

您正在尝试调用方法enterMarks(int)但在Student类中仅enterMarks(int, int, int, int, int, int)方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM