2016-04-06 4 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メソッドに渡し:あなたのStundentクラスで

    System.out.println(obj); //where obj is a Student object. 
    
0
  • 例えば、として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、住所:のAddr1、主:Major1、GPA:3.0]
Stundent [名:Name2は、住所:ADDR2、主要:Major2、GPA:3.5]

これで暗黙的にtoString()メソッドが呼び出されます。

関連する問題