2016-04-06 20 views
-2

對於println中的第6步,我知道如何明確調用toString,但是如何從數組中的當前學生輸出學生信息,而不顯式調用toString()訪問器方法?輸出信息,而不顯式調用java中的toString()

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(); 
     temp[i] = getStudent();  // Step 2 
    } 
    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(______);  // Step 6 
    } 
    } 

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

你的意思是你不想爲Student類實現toString()方法? –

+0

我對我的指令感到困惑,它是一個任務,我可以使用toString,只是隱式地不明確 – Beeeee

回答

0
  1. 聲明變量name, address, major, gpa成員變量。
  2. 覆蓋此類的toString()方法。

    public String toString() { 
        return "Name: " + name + "\n" + "Address: " + .... //whatever you want to print. 
    } 
    
  3. 當你需要打印一個學生的細節,它傳遞給println方法:

    System.out.println(obj); //where obj is a Student object. 
    
0
  • 在你Stundent類重寫toString()方法,例如::

    @Override 
    public String toString() { 
        return "Stundent [ Name: " + name + ", Address: " + address + ", Major: " + major + ", GPA: " + gpa + " ]"; 
    } 
    
  • ,並修改printStudents()方法如下(您的第6步):

    private static void printStudents(final Student[] s) { 
        System.out.println(); 
        for (final Student student : s) { 
         System.out.println(student); 
        } 
    } 
    
  • 那麼你的輸出應該是這樣的:

Stundent [名稱:名1,地址:地址1, Major:GPA:3.0]
Stundent [名稱:Name2,地址:Addr2,Major:Major2,GPA:3.5]

現在您會看到toString()方法將被隱式調用。