0

私はオブジェクト型の従業員の配列を持っています:

Employee[] employees = new Employee[100];

各従業員は、

Employee(FirstName, LastName, MiddleInitial, Status, Gender, EN);

各従業員は、作成時に配列に追加されます。従業員番号を入力する非静的メソッドを使用しており、配列インデックスを返します。

私は持っていpublic int getIndex(EN)ます。配列を検索して が配置されているインデックスを返すにはどうすればよいですか。EN現在 .equals を使用しようとしてe1.equals(e2)ENます。

ありがとう!

4

4 に答える 4

2

ENメソッドを使用する代わりに、を使用して検索する必要がありますequals()equals()それに応じてクラスでオーバーライドした場合は、メソッドも使用できますEmployee(ENが等しい場合、Employeeオブジェクトは等しいです)。

通常、次のようなことができます:-

public int getIndex(EN){
    int myIndex = -1;
    for(int i=0;i<empArray.length;i++){
        if(empArray[i].getEN()==EN){// Assuming EN is a number, else if its a String, use the equals() method.
            myIndex = i;
            break;
        }
    }
    return myIndex;
}

for-each標準ループの代わりにループを使用することもできforますが、その場合はカウンターを自分で維持する必要があります。

于 2013-09-30T11:24:30.527 に答える
0
public int getIndex(EN){
   iterate over your array
      if item.EN equals EN 
         return index
      end of if
   end of loop
   return -1 // default for not found case
}
于 2013-09-30T11:25:43.470 に答える
0
but I don't think I have overridden it properly to work....

あなたの . equals() メソッドはどのように機能しますか? Object クラスのデフォルトの equals() メソッドでsimply performs a == operation、ブール値を返します。個別の従業員オブジェクトを配列に格納しているため、常に false 値が返されます。

于 2013-09-30T11:26:18.347 に答える
0

静的な値と比較したい場合は、次のようにします。

for(Employee curr : employees)
{
   if(curr.getEN() == 10000)
     // do your magic
}
于 2013-09-30T11:26:54.023 に答える