2015-01-31 3 views
0

각 학생의 이름과 ID 번호를 표시하고 합격 또는 불합격 여부를 계산하는 애플리케이션을 작성해야합니다. 나는 4 개의 다른 종류 학생, studenttest, 대학생, 대학원이있을 필요가있다.상속 및 다형성 지정

학생

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 

학부

public class Undergarduate extends Student{ 



} 

대학원을

public class Postgraduate extends Student{ 



} 

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 

나는 줄에 studenttest에 오류가 계속

student.enterMarks(int_input.nextInt()); 

오류가 읽

메소드 enterMarks (INT, INT, INT, INT, INT, INT)가에 타입 학생은 인수에 적용 할 수 없습니다. (int)

+2

이 상속이나 다형성과는 아무 상관 없다; 오류 메시지는 문제가 무엇인지 정확히 알려줍니다. 당신은 오직 1과 6 인자를 취하는 메서드를 호출하려고 노력 중입니다. –

답변

1

클래스 학생이 각 과목 (영어, 수학 등)에 대한 점수를 예상 할 때마다 모든 주제를 enterMarks 메소드의 입력으로 전달하도록 StudentTest 클래스를 변경하십시오.

가에서 메서드 호출을 변경

:

student.enterMarks(int_input.nextInt()); 

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. 
+0

당신의 도움에 감사 드려요.하지만 당신이 준 메소드로 대체되었지만 여전히 오류가 발생했습니다. 메소드 enterMarks (int, int, int, int, int) , int) 타입의 학생은 인수에 적용 할 수 없다. (int. int. int. int. int) – RifferRaffers

+0

기다림. 너무 많은 int.input()을 고쳤다. ur 도움에 감사한다. – RifferRaffers

+0

다행 너는 그것을 고쳤다. 이제 이것을 게시하면 다음과 같은 오류를 수정하는 방법을 기억할 것입니다. :) – SMA

0

enterMarks(int) 메소드를 호출하려고하지만 학생 클래스에 정의 된 enterMarks(int, int, int, int, int, int) 메소드 만 있습니다.