2016-04-06 7 views
1

this is the output that i get Ich versuche, das aktuelle Array-Element im Temp-Array mit dem Student-Objekt nach dem Aufruf der getStudent-Methode zurückgegeben .... Ich rief die Methode getStudent (Schritt 2) und temp [ i] = das aktuelle Element im temp-Array zuweisen, aber nicht herausfinden, was es tun soll = um es mit dem zurückgegebenen Student-Objekt zu paaren. Wenn getStudent() verwendet wird und das Programm ausgeführt wird, gibt die Ausgabe die Anzahl der Schüler ein, der Benutzer gibt die Nummer ein und das ist alles, was passiert, es fragt nicht, ob der Benutzer den Namen eingeben soll usw., ich bin es nicht Sicher, ob Schritt 2 das Problem ist oder ob es ein anderes Problem gibt.Zuweisen und Zurückgeben von Objekten in Java

import java.util.Scanner; 

public class Students 
{ 
    private static Scanner input = new Scanner(System.in); 

    public static void main(String[] args) 
    { 
    Student[] students; 

    students = getStudents(); 
    printStudents(students); 
    } 

    private static Student[] getStudents() 
    { 
    Student[] temp; 
    int  how_many; 

    System.out.print("How many students? "); 
    how_many = input.nextInt(); 
    purgeInputBuffer(); 
    temp = new Student[input.nextInt()]; // Step 1 ??? 
    for (int i = 0; i < temp.length; i++) 
    { 
     getStudent();   // Step 2 
     temp[i] =  ; // <----------  
    } 
    return temp; // Step 3 
    } 

    private static Student getStudent() 
{ 
    String name, 
     address, 
      major; 
    double gpa; 

    System.out.print("Enter name: "); 
    name = input.nextLine(); 
    System.out.print("Enter address: "); 
    address = input.nextLine(); 
    System.out.print("Enter major: "); 
    major = input.nextLine(); 
    System.out.print("Enter GPA: "); 
    gpa = input.nextDouble(); 
    purgeInputBuffer(); 

    return new Student (name, address, major, gpa);  // Step 4 
    } 

    private static void printStudents(Student[] s) 
    { 
    System.out.println(); 
    for (int i = 0; i < s.length; i++) // Step 5 
    { 
     System.out.println(getStudent());  // Step 6 
    } 
    } 

    private static void purgeInputBuffer() 
    { 
    // ---------------------------------------------------- 
    // Purge input buffer by reading and ignoring remaining 
    // characters in input buffer including the newline 
    // ---------------------------------------------------- 
    input.nextLine(); 
    } 
} 
+2

warum nicht zu verwenden: 'temp [i] = getStudent();// Schritt 2'? – Cootri

+0

Wenn Sie das verwenden und das Programm ausführen, gibt die Ausgabe die Anzahl der Schüler ein, der Benutzer gibt die Nummer ein, und das ist alles, was passiert, fragt den Benutzer nicht nach dem Namen usw. – Beeeee

+0

Ich bin mir ziemlich sicher Was @ Couti gesagt hat, ist, was Sie tun sollten. Aber schauen Sie sich auch Ihre 'private static void printStudents (Student [] s)' -Methode und genau die Zeile '// step 6' an. Ich glaube nicht, dass Sie das so machen wollen. Stattdessen wollen Sie 'System.out.println (s [i]);' nicht 'System.out.println (getStudent());' Damit meine Codeersetzung funktioniert, müssen Sie die 'toString'-Methode so übersteuern kann die Information korrekt anzeigen – 3kings

Antwort

1

So erstes Problem ist, zunächst auf der Linie:

temp = new Student[input.nextInt()];

in dieser Linie haben Sie bereits die Benutzer gefragt, wie viele Schüler eingeben und speichern sie in how_many. Also ich nehme an, Sie stattdessen tun:

temp = new Student[how_many];

Auch das, was ich in meinem Kommentar sagte:

Aber bitte bei Ihrer private static void printStudents(Student[] s) Methode schauen Sie auch und acutally auf der Linie // Schritt 6 Ich glaube nicht, dass du das so willst. Stattdessen möchten Sie System.out.println(s[i]); nicht System.out.println(getStudent()); Für meine Code-Substitution zu arbeiten, obwohl Sie die toString-Methode überschreiben müssen, so dass es tatsächlich die Informationen anzeigen kann

+0

Das erlaubt dem Programm weiterzumachen, aber stellt weiterhin die Fragen nach der Anzahl der eingegebenen – Beeeee

+0

@Brent Did you ändere die zweite Sache, die ich erwähnte – 3kings

+0

ja ich änderte die zweite Sache .... es muss ein Problem für die Aussage sein? nicht ganz sicher – Beeeee

Verwandte Themen