2016-06-28 34 views

回答

0

這是重要的錯誤消息。

無法使靜態參考非靜態方法 getStudentID();從學生類型。

您需要在類的實例上調用getStudentID(),而不是類本身。你可以嘗試這樣的事情。

public static void print_all() { 

    System.out.println("Student ID\tRecent Grades\tName\t\tE-Mail\t\t\tAge"); 
    for (Student w : studentlist) { 
     System.out.print(w.getStudentID() + "\t\t"); 
     System.out.print(w.getGrades() + "\t"); 
     System.out.print(w.getFirstname()+ " "); 
     System.out.print(w.getLastname()+ "\t"); 
     System.out.print(w.getEmail()+ "\t"); 
     System.out.print(w.getAge()+ "\t"); 
     System.out.println(" "); 
    } 
} 

調用Student.getStudentID()只會如果有一個靜態(共享)ID爲所有的學生工作。這裏不是這種情況。您可以查看this post以獲取有關java中static關鍵字的更完整說明。

+0

事實證明,我正在使用arraylist studentlist,所以我需要做一個get()。getStudentID()以正確調用我的值。 – GrumpyCoder

+0

@GrumpyCoder如果您使用for-each循環,則不需要*使用get(i).getX()。我更新了我的答案,爲您的解決方案提供了替代方案。 –

+0

我喜歡這個比我使用的get和getID更好,更乾淨。 我想保持先進的for循環,而不是基於計數器的循環,我認爲他們更清潔。 – GrumpyCoder

0

錯誤說明了這一切。 getStudentID()方法是Student類的非靜態方法。調用Student.getStudentID()是一個靜態調用,因此是錯誤。在學生的一個實例上調用getStudentID()方法。