2015-02-16 3 views
1

Это мое первое сообщение на форуме, поэтому, пожалуйста, простите меня, если я не опубликую всю необходимую информацию в первый раз. Кроме того, это назначение класса, поэтому я не ищу никаких ответов, а просто второй набор глаз и предложений относительно того, что я могу делать неправильно. Я пытаюсь использовать равный метод для сравнения зарплат двух клерков с соответствующими выходами (равными или нет). Я следовал примеру, приведенному в классе, но я явно делаю что-то неправильно, поскольку одна зарплата составляет 35 тыс., А другая - 30 тыс., Поэтому мой вывод должен быть «не равным». Я включил как класс 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","[email protected]", 35000, "G5"); 
     Clerk jose = new Clerk("Jose Gonzalez", "Orlando, FL", "407 555 9999","[email protected]", 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); 

    } 

} 
+1

Нам также понадобится код для «Человек», чтобы иметь возможность запускать это. Однако при чтении все выглядит нормально, и я подозреваю, что после редактирования вы не перекомпилировали. – chrylis

+0

О, я неправильно понял .. игнорировать мой ответ – mtk

ответ

5

Осторожно, крышки!

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

(Salary против salary).

отличная почта, вся информация и код, в которых мы нуждались. Добро пожаловать в StackOverflow :)

+2

Nice catch. Это было тонким. – chrylis

+0

Один острый глаз прямо здесь – drgPP

0

В конструкторе для клерка:

ваш параметр заработной платы выглядит следующим образом: int Salary

но вы установили зарплату, используя

setSalary (salary);

теперь зарплату вы использование в setSalary - это переменная класса. Эта переменная класса по умолчанию равна 0, поэтому каждый сделанный вами Clerk имеет зарплату, равную 0. Поэтому все они равны.

Сделать зарплату в нижнем регистре

+0

Я хотел бы поблагодарить всех, кто нашел время, чтобы прочитать мой вопрос и предложить предложения. Как и некоторые из вас предположили, проблема заключалась в том, чтобы покрывать (зарплату и зарплату). Это небольшие детали, над которыми мне нужно продолжать работать при кодировании. Еще раз спасибо! – chimi78

Смежные вопросы