0

StudentクラスとEmployeeクラス(他のEmployeeタイプのクラスによって拡張される)によって拡張されるPersonクラスを作成しました。人物クラスは次のようになります。

String name;
 int ssn;
 int age;
 String gender;
 String address;
 String PNumber;
 static int count;

//empty constructor
public Person(){
    count++;
}

//print count
public static void printCount(){
    System.out.println("The number of people is: "+ count);
}

//constructor with name
public Person(String name){
    this.name = name;
    count++;
}

/*constructor to create default person object*/
public Person(String name, int ssn, int age, String gender, String address, String PNumber)
{

    this.name = name;
    this.ssn = ssn;
    this.age = age;
    this.gender = gender;
    this.address = address;
    this.PNumber = PNumber;
    count++;
}

私は現在、性別が「男性」の場合にすべての人物を表示するメソッドを作成しようとしています。私は持っています:

//display Males
public void print(String gender){ 
    if(this.gender.contentEquals(gender)){
        //print out person objects that meet this if statement
    }
}

メソッド内でオブジェクト(すべての人である学生と従業員)を参照してオブジェクトを返す方法がわかりません。また、メインメソッドでこのメソッドを参照する方法もわかりません。Person.printは使用できませんが、使用する場合

Person james = new Person(); 

その後、

james.print("Males"); 

私はジェームズを返すだけです(そしてその方法はその文脈では意味がありません)。

助けていただければ幸いです。

4

1 に答える 1

1

まず、printメソッドをstaticメソッドにする必要があります。個々のPersonオブジェクトから独立しているため、静的にすると、mainメソッドで次のように呼び出すことができます。

Person.print("Male");

printメソッドでPersonオブジェクトを参照するには、Personオブジェクトのコレクションをパラメーターとして渡す必要があります。Personのすべてのインスタンスを配列に保持し、呼び出すときにそれをprintメソッドに渡す必要があります。次に、印刷方法は次のようになります。

public static void print(String gender, Person[] people) {
    for(Person x : people)
        if (x.gender.equals(gender))
            //print the person
}

この変更により、メインメソッドから次のように呼び出す必要があります。

Person.print("Male", people);

ここで、peopleは、すべてのPersonオブジェクトを保持する配列です。

于 2013-02-13T01:29:14.323 に答える