我的toString()只返回一个对象乘以总对象的数量

时间:2014-09-05 00:33:09

标签: java

有人可以帮助解决这个问题。我想打印所有对象

public class Student {
    private static String firstName;
    private static String lastName;
    private static int studentId;
    private static String major;
    private static double balance;


    public Student (String fName, String lName,int id,String mjr,double blce)   {
        firstName = new String(fName);
        lastName = new String(lName);
        studentId = id;
        major = new String(mjr);
        balance = blce;
    }




    public String toString ()   {
        return firstName + "\t" + lastName + "\t" + studentId + "\t" + major + "\t$" + balance;
    }


    public boolean equals (Object obj)  {
        if (obj instanceof Student) {
            Student collegeStud = (Student) obj;
            return (this.firstName.equals(collegeStud.firstName));
        } else
            return false;
    }

    public static String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public static String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public static int getStudentId() {
        return studentId;
    }

    public void setStudentId(int studentId) {
        this.studentId = studentId;
    }

    public static String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    public static double getBalance() {
        return balance;
    }
    /*
     * .commmm
     */

    public void setBalance(double balance) {
        this.balance = balance;
    }



    public static void main (String[] args) {

        Student Mike = new Student ("Mike","Versace", 99, "CS",0.00);
        Student John = new Student ("John","Sling" ,97, "Maths", 20.00);
        Student Bob = new Student ("Bob","Tomson" ,57, "Physic",5.00);

        System.out.println (Mike.toString() + "\n" + John.toString());

        if (Mike.equals(John))
        System.out.println ("Mike is John");
        else
            System.out.println ("Mike is NOT John");
    }
}

import java.io.ObjectInputStream.GetField;


public class StudentList {
    private  int numberOfStudents=0;
    private Student[] studentListArray;
    //private int studentCount = 0;



    StudentList ()  {
        numberOfStudents=0;
        studentListArray = new Student[100];    


    }
    public void createStudent(String firstName, String lastName,int studentId, String major, double balance){
        Student collegeStud = new Student(firstName, lastName, studentId, major, balance);
        addStudent(collegeStud);
        numberOfStudents++;

    }


    public void addStudent (Student collegeStud)    {
        studentListArray[numberOfStudents++]=new Student(collegeStud.getFirstName(), collegeStud.getLastName(),
            collegeStud.getStudentId(), collegeStud.getMajor(),collegeStud.getBalance());
    }


    public String toString()    {
        String result = "";
        for (int i=0; i<numberOfStudents; i++)  {
            result += studentListArray[i].toString() + "\n";
        }
        return result;
    }

    public Student[] getList()  {
        return studentListArray;
    }


    public int listSize()   {
        return numberOfStudents;
    }



public Student searchForStudent (String firstName){
    int index = 0;
    while (index < numberOfStudents) {
        if (studentListArray[index].equals(new Student(Student.getFirstName(),Student.getLastName(),Student.getStudentId(),Student.getMajor(),Student.getBalance()))) {

            return studentListArray[index];

        }
        index++;
    }
    return null;        
    }



    public static void main(String args[])  {
        StudentList theList = new StudentList();
        theList.addStudent (new Student ("John","Sling" ,97, "Maths", 20.00));
        theList.addStudent (new Student ("Mike","Versace", 99, "CS",0.00));
        theList.addStudent (new Student ("Bob","Tomson" ,57, "Physic",5.00));
        //theList.createStudent(new Student(Student.getFirstName(),Student.getLastName(),Student.getStudentId(),Student.getMajor(),Student.getBalance()));
        //theList.searchForStudent(new String());


        System.out.println (theList.toString());



    }


}

1 个答案:

答案 0 :(得分:5)

问题是您将字段标记为static。删除它,该方法将按预期工作。

public class Student {
    //non-static fields
    private String firstName;
    private String lastName;
    private int studentId;
    private String major;
    private double balance;
    //similar for getters, setters and toString method
}

静态成员在类中的所有对象之间共享,而不是每个对象一个。因此,您创建的每个新对象都将覆盖前一个对象的数据。

更多信息: