遇到Equal Method问题

时间:2015-02-16 08:21:54

标签: java equals

这是我在论坛上发表的第一篇文章,如果我没有在首次复出时发布所有正确的信息,请原谅我。此外,这是一个课堂作业,所以我不是在寻找任何答案,而只是第二组眼睛和建议我可能做错了什么。我试图使用相等的方法来比较两个职员的工资与相应的输出(相等或不相等)。我按照课堂上给出的例子,但我明显做错了,因为一个薪水是35k而另一个是30k所以我的输出应该是"不等于"。我已经包括了Clerk类以及可能能给我一些指针的任何人的测试类。提前谢谢。

public class Clerk extends Person {


    private int salary;
    private String grade;

    public Clerk(String name, String address, String telephone, String email, int Salary, String grade) {
        super(telephone, address, name, email);
        setSalary (salary);
        setGrade (grade);

    }

    public boolean equals(Object obj) { 
        if (!(obj instanceof Clerk)) {
            return false;
        }
        boolean result = false;

        if (this.salary == ((Clerk) obj).getSalary()) {
            result = true;
        }
        return result;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }

    public String getGrade() {
        return grade;
    }

    public void setGrade(String grade) {
        this.grade = grade;
    }

    public String toString() {
        String result;
        result = super.toString() + "  Salary:" + salary + "  Pay Grade:" + grade;
        return result;

    }
}


public class Test {

    public static void main(String[] args) {


        Clerk james = new Clerk("J Bishop", "St. Cloud, FL", "407-555-0000","jbiz@aol.com", 35000, "G5");   
        Clerk jose = new Clerk("Jose Gonzalez", "Orlando, FL", "407 555 9999","jgonz@vcc.edu", 30000, "G4");


        if (jose.equals(james)) {
            System.out.println("Jose and James are equal");
        } else {
            System.out.println("Jose and James are NOT equal");

        }

        System.out.println(jose);
        System.out.println(james);

    }

}

2 个答案:

答案 0 :(得分:5)

小心帽!

public Clerk(String name, String address, String telephone, String email, int salary, String grade) {

Salary vs salary)。

btw优秀的帖子,我们需要的所有信息和代码。欢迎来到stackoverflow:)

答案 1 :(得分:0)

在你的Clerk构造函数中:

你的工资参数如下: int Salary

但您使用

设置薪水

setSalary (salary);

现在你在setSalary中使用的薪水是类变量。该类变量默认为0,因此您所做的每个职员都将工资设置为0.因此它们都是相等的。

使薪水小写