Gelöscht auf Anfrage von akademischen Institutionen Ich kann keine Beispiele bereitstellenJava-Druck(); Methode mit Gettern aus einer anderen Klasse
Antwort
Dies ist die wichtige Fehlermeldung.
Kann keine statische Referenz auf die nicht statische Methode erstellen getStudentID(); vom Typ Student.
Sie benötigen getStudentID()
auf eine Instanz der Klasse rufen und nicht die Klasse selbst. Sie können so etwas versuchen.
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()
aufrufen würde nur funktionieren, wenn es eine statische (gemeinsam) war ID für alle Schüler. Dies ist hier nicht der Fall. Sie können this post für eine vollständigere Erläuterung des statischen Schlüsselworts in Java anzeigen.
Der Fehler sagt alles. Die Methode getStudentID() ist eine nicht statische Methode der Student-Klasse. Der Aufruf Student.getStudentID() ist ein statischer Aufruf und daher der Fehler. Rufen Sie die Methode getStudentID() für eine Instanz eines Student auf.
Es stellt sich heraus, dass ich die arraylist studentlist verwendet habe, also musste ich get(). GetStudentID() verwenden, um meine Werte richtig aufzurufen. – GrumpyCoder
@GrumpyCoder Sie brauchen nicht * get (i) .getX() 'zu verwenden, wenn Sie eine for-each-Schleife verwenden. Ich habe meine Antwort aktualisiert, um eine Alternative zu Ihrer Lösung zu bieten. –
Ich mag das besser als die get und getID, die ich verwendet habe, viel sauberer. Ich wollte auch an der erweiterten for-Schleife festhalten, anstatt der Zähler-basierten Schleife, denke ich, dass sie viel sauberer sind. – GrumpyCoder