搜索员工对象数组中的员工对象

时间:2013-12-13 15:32:39

标签: java

这是我的计划:

class EmP
{
    int id;
    Emp(int id)
    {
        this.id=id;
    }
    int getId()
    {
        return id;
    }
    int find(Emp[] emp)
    {
        int i;
        for(i=0;i<emp.length;i++)
        { 
            if(emp[i]==emp[i])
                return i;
            else
                return -1;
        }
        System.out.println("successfull");
    }
    public static void main(String args[])
    {
        Emp emp[]={new Emp(1),new Emp(2),new Emp(3)};
        find(emp[0]);
    }
}

此程序查找是否有数组中的员工对象。编译此程序时出错。我可以知道这个程序有什么问题吗?

3 个答案:

答案 0 :(得分:5)

在提问时,您应始终告诉错误消息。那些东西存在是有原因的。但是,我认为这与此有关:

public class EmP {

在其他任何地方使用classname Emp(注意小写“p”)。案例在Java中很重要,别忘了!还有另一种语法错误:

find(emp[0]);

find不是static方法,因此您需要在对象实例上调用它。此外,emp[0]不是Emp[],因此参数类型不匹配。例如,emp[0].find(emp)在语法上是正确的。

最后,您的find方法在语义上不正确。

if(emp[i]==emp[i])
    return i;
else
    return -1;

您只是检查emp[i]中的对象是否与自身相同。此外,如果不是,您将立即放弃搜索而不检查阵列的其余部分。改为使用this对象,只有在搜索完整个数组后才返回-1而没有找到匹配项。

你有很多需要解决的问题。

答案 1 :(得分:2)

这就是您查看编译器显示的错误的原因。 IDE甚至在您执行程序之前显示此信息,您只需要查看列表并进行修复。

  1. 您的课程名为EmP,其他所有内容均为Emp
  2. 您的find()方法并不总是返回int。如果for循环没有执行,它将不会返回任何内容。
  3. if(emp[i]==emp[i])没有多大意义。
  4. 您的方法find()需要Emp[],但会收到Emp
  5. 您实际上无法调用方法find(),但在该上下文中并不知道。
  6. 您不使用方法find()的结果。

答案 2 :(得分:0)

@JeroenVannevel和@kviiri发现了大约5-6个问题。不想写同样的东西。根据{{​​1}}

我认为它应该是这样的:

This program finds if an employee object is present in array or not

输出:

public class EmP{
    int id;

    public EmP(int id){
        this.id=id;
    }

    int getId(){
        return id;
    }

    static boolean find(EmP[] emp, EmP target){
        int i;

        for(i=0;i<emp.length;i++){
            if(emp[i].getId()==target.getId())
                return true; // found
        }

        return false; // not found
    }

    public static void main(String args[]){

        EmP emp[]={new EmP(1),new EmP(2),new EmP(3)};

        EmP e =  new EmP(1);
        boolean status = find(emp, e);    
        System.out.println("the employee with id " + e.getId() + " found: " + status);

        e =  new EmP(7);    
        status = find(emp, e);    
        System.out.println("the employee with id " + e.getId() + " found: " + status);
    }
}