Reputation: 223
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.
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
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)
Upvotes: 0
Views: 1047
Reputation: 37093
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.
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.
Upvotes: 1
Reputation: 81
You are trying to invoke method enterMarks(int)
but there is only enterMarks(int, int, int, int, int, int)
method defined in Student class.
Upvotes: 0