2016-06-28 75 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()方法。