2016-04-06 12 views
2

ステップ4では、入力された4つの情報を使用して匿名のインスタンス化されたStudentオブジェクトを返す必要があります。私はこれに対処するフォーラムを見つけることができなかったので、私はそれを設定するための助けや例が必要です。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(); 
     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 ___________________________________________________;  // 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(); 
    } 
} 

答えて

3

単に

constructor argsは、あなたの Studentコンストラクタが必要ですどんな引数です
return new Student(constructor args); 

ここでの「匿名」の使用は、標準のJava用語ではありません。私はあなたが "匿名"と見なすことができるローカル変数にオブジェクト参照を割り当てないので、私は仮定します。 getStudent()そう参照(配列に)直ちに保存され

temp[i] = getStudent(); 

getStudents()に呼び出されるので、それは長い間、匿名のままではないであろう。

「匿名」という用語は「匿名サブクラス」という用語で使用されていますが、これはおそらくまだ触れていないまったく異なる概念です。

+0

このようにしていただきありがとうございます – Beeeee

0

フィールドをプライベートにして、パラメータ化されたコンストラクタを使用して初期化することができます。

public class Students 
{ 
    private static Scanner input = new Scanner(System.in); 
    private String name; 
    private String address; 
    private String major; 
    double gpa; 

    public Students(String name, String address, String major, double gpa) { 
    this.name = name; 
    this.address = address; 
    this.gpa = gpa; 
    this.major = major; 
    } 

    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 Students(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(); 
    } 
} 
関連する問題