简体   繁体   中英

Four element array object setter method?

I've coded a program named TestStudent class that creates four element array of Student object. User is prompt to enter the student id, name, department and classification level. Here's the code :

import java.util.Scanner;

public class TestStudent {

public static void main(String[] args) {
    //Create a Scanner object
    Scanner input = new Scanner(System.in);

    //Create a four element array of Student object 
    Student[] studentList = new Student[4];

    for (int i = 0; i < studentList.length; i++) {
        int j = i + 1;
        //Prompt user to enter student matrix number
        System.out.println("Enter student " + j + " id : ");            
        studentList[i].setIdStudent(input.nextInt());

        //Prompt user to enter student name
        System.out.println("Enter student " + j + " name : ");
        studentList[i].setName(input.nextLine());

        //Prompt user to enter student department
        System.out.println("Enter student " + j + " department : ");
        studentList[i].setDepartment(input.nextLine());

        //Prompt user to enter student classification level
        System.out.println("Enter student " + j + " classification : ");
        studentList[i].setClassification(input.next());

        System.out.println("\n");
    }

    //Print result
    System.out.println("Id Student  Name            Department      Classification");
    System.out.println("******************************************************************************");
    for (int i = 0; i < studentList.length; i++) {
    System.out.println(studentList[i].getIdStudent() + "    " + studentList[i].getName() + "    " + studentList[i].getDepartment() + "      " + studentList[i].getClassification());
    }

}

    public class Student {
      //Student matrix number
      private int idStudent;

      //Student name
      private String name;

      //Student department
      private String department;

      //Student classification level
      private String classification;

      //Construct a default Student object
      public Student() {
        idStudent = 0;
        name = " ";
        department = " ";
        classification = " ";
      }

      //Construct a Student object
      public Student(int idStudent, String name, String department, String classification) {
        this.idStudent = idStudent;
        this.name = name;
        this.department = department;
        this.classification = classification;
       }

       //Return student matrix number
       public int getIdStudent() {
        return idStudent;
       }

       //Return student name
       public String getName() {
        return name;
       }

       //Return student department
       public String getDepartment() {
        return department;
       }

       //Return student classification level
       public String getClassification() {
        return classification;
       }

       //Set student matrix number
       public void setIdStudent(int newIdStudent) {
        newIdStudent = idStudent;
       }

       //Set student name
       public void setName(String newName) {
        newName = name;
       }

       //Set student department
       public void setDepartment(String newDepartment) {
        newDepartment = department;
       }

       //Set student classification level
       public void setClassification(String newClassification) {
        newClassification = classification;
       }

         }

}

The expected output is:

    Id Student     Name           Department        Classification
  ********************************************************************************
  1140           Will Gerard    Music             Junior
  1152           Julia Ross     Architecture      Freshman
  1130           Fred Huan      Medic             Senior
  1137           Clara Whist    Aviation          Sophomore

But the error occured:

Enter student 1 id : 
1140
Exception in thread "main" java.lang.NullPointerException
    at Asg2.TestStudent.main(TestStudent.java:28)

I suppose that the problem seem to be the studentList[i].setIdStudent(input.nextInt()); line. Any suggestion on how to solve this problem?

1) Go to line 28.

2) There you have some reference which has a null value
at the moment when you try to call a method on it or to access
one of its fields (class variables).

3) Make sure you initialize that reference before trying
to use it, so that it's not null when you need it to have
a non-null value.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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