2016-04-06 9 views
1

this is the output that i get getStudent yöntemi çağrıldıktan sonra geri .... ı getStudent yöntemi (Aşama 2) olarak adlandırılan ve [temp sahip i] = geçici elemanı temp dizisine atamak ancak ne yapması gerektiğini çözememek = döndürülmüş olan Öğrenci nesnesi ile eşleştirmek. GetStudent() işlevini kullanırken ve programı çalıştırırken çıktı, öğrenci sayısını girer, kullanıcı sayıyı girer ve bu gerçekleşir, kullanıcının adı ve vs. girmesini istemez. 2. adım sorunsa ya da tamamen başka bir sorun varsa emin olun.atama ve Java nesneleri geri I Öğrenci nesne ile geçici dizisinde mevcut dizi elemanı atamak için çalışıyorum

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

neden kullanmıyorsunuz: 'temp [i] = getStudent(); // Step 2'? Bu kullanarak ve programı çalıştırırken – Cootri

+0

, çıkış kullanıcı numarasını girer, öğrenci numarasını girin ve bu gerçekleşirse hepsi, ben eminim adını ve vb – Beeeee

+0

girmek için kullanıcı için sormuyor olduğunu @Cootri'nin ne yapması gerektiğini söyledi. Ama lütfen 'özel statik boşluklu printStudents (Öğrenci []' ler) metoduna da bakın ve '// adım 6' satırında da, bu şekilde yapmak istediğinize inanmıyorum. Bunun yerine istediğiniz 'System.out.println (lar [i]);' 'yok System.out.println (getStudent());' bunu böylece 'toString' yöntemini geçersiz kılar gerekir gerçi benim kod ikamesi çalışması için acutally – 3kings

cevap

1

Yani ilk sorun hattında ilk: satırdaki

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

Zaten kaç Öğrenciler girip how_many depolamak için kullanıcı istedi.

temp = new Student[how_many];

benim yorumunda söyledi Ayrıca hangi: Yani bunun yerine yapmak istiyorum tahmin ediyorum

Ama aynı zamanda private static void printStudents(Student[] s) yöntemine ve acutally çizgi // 6. adımda bakmak lütfen Bunu nasıl yapmak istediğine inanmıyorum. Bunun yerine, değil System.out.println(getStudent()); değil Benim kod değiştirme çalışması için toString yöntemini geçersiz kılmanız gerekecek, bu yüzden aslında bu bilgiyi kullanamazsınız.

+0

girilen – Beeeee

+0

@Brent Öyle mi – 3kings

+0

'dan bahsettiğim ikinci şeyi değiştirdim, evet ikinci şeyi değiştirdim .... açıklama için bir problem olmalı? tamamen emin değil – Beeeee