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并返回布尔值。由于您将不同的员工对象存储在数组中,因此您将始终获得错误值。

于 2013-09-30T11:26:18.347 回答
0

如果您想与静态值进行比较,那么只需执行以下操作:

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