簡體   English   中英

打印出arrayList時是否為空值?

[英]Null values when printing out arrayList?

嗨,我在我的一個類中創建了一個toString方法,如下所示。 學生班:

package Practical5;

public class Student extends Person {

    //instance variables
    private static int MAX_MODULES = 6;
    private StudentMode modeOfStudy;
    private boolean studentLoan;
    private int numEnrolledModules;

    //constructor
    public Student(String name, String dob, Address address, StudentMode modeOfStudy, boolean studentLoan) {
        super(name, dob, address);
    this.modeOfStudy = modeOfStudy;
    this.studentLoan = studentLoan;
    this.numEnrolledModules = 0;
    }

    //accessors & mutators
    public StudentMode getMode() {
        return modeOfStudy;
    }

    public boolean isStudentLoan() {
        return studentLoan;
    }

    public int getNumEnrolledModules() {
        return numEnrolledModules;
    }

    public void setMode(StudentMode modeOfStudy) {
        this.modeOfStudy = modeOfStudy;
    }

    public void setStudentLoan(boolean studentLoan) {
        this.studentLoan = studentLoan;
    }

    public void setNumEnrolledModules(int numEnrolledModules) {
        this.numEnrolledModules = numEnrolledModules;
    }

    @Override
    public void purchaseParkingPass() {
        System.out.println(getName() + " just purchased a parking pass with student discount.");
    }

    @Override
    public void addModule(String moduleCode) {
        if (getNumEnrolledModules() < MAX_MODULES) {
            System.out.println(getName() + " successfully registered for the module: " + moduleCode);
        }
        else {
            System.out.println("You are unable to register for " + moduleCode + " as the maximum number of permitted module enrolments has been reached.");
        }

    }

    public String toString() {
        return "Student [ ID: " + getId() + "; Name: " + getName() + 
                "; DOB: " + getDob() + "; Study Mode: " + getMode() +
                "; Number of Enrolled Modules: " + getNumEnrolledModules();
    }
}

人員類別:

package Practical5;

public abstract class Person {


    //instance variables
    private static int LAST_ID = 1000 + 1;
    private int id;
    private String name;
    private String dob;
    private Address address;

    //constructor
    public Person(String name, String dob, Address address) {
        super();
        LAST_ID ++;
        this.id = LAST_ID;

    }

    //accessors & mutators
    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getDob() {
        return dob;
    }

    public Address getAddress() {
        return address;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setDob(String dob) {
        this.dob = dob;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    //methods
    public abstract void purchaseParkingPass();
    public abstract void addModule(String moduleCode);



}

然后,我創建了一個測試器類,並創建了一個新的ArrayList並將這些元素添加到其中。

然后,我創建了一個for循環,以循環遍歷每個元素,並調用toString方法以打印出每個元素的詳細信息,但它返回的是空值。

測試人員類別:實用軟件包5;

import java.util.ArrayList;
import java.util.Scanner;



public class UIS_Tester {

    public static void main(String[] args) {

        Student student1 = new Student("James Black", "07/09/1995" , new Address("Wheeler's Road",10,"Belfast", "BT12 5EG", "Co.Antrim"),StudentMode.Fulltime, false);
        Student student2 = new Student("Adam Smith", "12/11/1979" , new Address("Ivy Hill",67,"Belfast", "BT17 7BN", "Co.Antrim"),StudentMode.Parttime, true);

        ArrayList<Person> uniPeople = new ArrayList<Person>();

        uniPeople.add(student1);
        uniPeople.add(student2);

        printMenu(uniPeople);



    }


    public static void printAllDetails(ArrayList<Person> uniPeople) {
        for (int i = 0; i < uniPeople.size(); i++) {
            System.out.println(uniPeople.get(i).toString());
        }
    }
}

輸出:

Student [ ID: 1002; Name: null; DOB: null; Study Mode: Fulltime; Number of Enrolled Modules: 0
Student [ ID: 1003; Name: null; DOB: null; Study Mode: Parttime; Number of Enrolled Modules: 0

誰能幫助我解決這個問題? 謝謝

public Person(String name, String dob, Address address) {
    super();
    LAST_ID ++;
    this.id = LAST_ID;
}

構造函數完全忽略其三個參數。 不會將它們分配給相應的字段,因此這些字段保留其默認值:null。

您必須將名稱值存儲在構造函數中。 您的版本未使用名稱值。

public Person(String name, String dob, Address address) {
    super();
    this.name = name; // <== important line
    this.dob = dob;  // <== important line
    this.address = address;  // <== important line
    LAST_ID ++;
    this.id = LAST_ID;

}

親自和學生看構造函數,應使用方法標題中的參數。

super(name,dob,address)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM