有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在使用Equal方法时遇到问题

这是我在论坛上的第一篇帖子,所以如果我没有在我的第一次尝试中发布所有正确的信息,请原谅我。此外,这是一个课堂作业,所以我不是在寻找任何答案,只是第二组眼睛和建议,我可能做错了什么。我试图用相等的方法来比较两名职员的工资与各自的产出(相等或不相等)。我遵循课堂上给出的例子,但我显然做错了什么,因为一个工资是35k,另一个是30k,所以我的产出应该是“不相等的”。我已经为任何能够给我一些建议的人提供了Clerk类和test类。先谢谢你

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) 个答案

  1. # 1 楼答案

    小心帽子

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

    Salaryvssalary

    顺便说一句,非常好的帖子,所有我们需要的信息和代码。欢迎来到stackoverflow:)

  2. # 2 楼答案

    在您的职员构造函数中:

    您的薪资参数如下所示: int Salary

    但是你用

    setSalary (salary);

    现在,您在setSalary中使用的工资是类变量。该类变量的默认值为0,因此您雇用的每个职员的薪资都设置为0。因此,他们都是平等的

    使工资小写