2014-09-05 85 views
0

有人可以幫助解決這個問題。我想打印所有對象一次請我的toString()僅返回一個對象乘以總對象數

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()); 



    } 


} 

回答

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 
} 

靜態成員之中類中的所有對象共享,而不是每個對象一個。因此,您創建的每個新對象都會覆蓋前一個對象的數據。

更多信息:

+1

良好的漁獲,L,我只是增加了一個小的解釋,答案應該是獨立的,即使在互聯網上的其他網站都以消失。 – paxdiablo 2014-09-05 00:39:46

+0

@paxdiablo感謝您的編輯。是的,現在它是獨立的。 – 2014-09-05 00:41:02

+0

我撤銷了靜態和我有問題的搜索方法public Student searchForStudent(String firstName){ \t int index = 0; \t而(指數 Semm 2014-09-05 00:45:20