Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не могу разобраться 
V
    Опции темы
Midav88
Дата 11.8.2011, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.5.2011

Репутация: нет
Всего: нет



Добрый день!
Помогите пожалуйста решить проблему!
Есть такой код
Код

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package test3;

/**
 *
 * @author Midav
 */
abstract class  Person {
   private String name;
   public Person (String n)
    {
      name=n;
    }
   public String getName()
    {
      return name;
    }
   public abstract String getDescription();

}

class Employe extends Person {

    private double salary;

public Employe (String n, double s)
    {super(n);
    salary=s;
    }
public String getDescription()
    {
        return "Sotrudnik s zarplatoi = "+salary;
    }
  public double getSalary(){
     return salary;
 }
public void resizSalary(double byPercent)
    {
    salary*=1+byPercent/100;
}

   
    @Override
public boolean  equals(Object other)
    {
        if (this==other) return true;
        if (other==null) return false;
        if (getClass()!= other.getClass()) return false;
        Employe e =(Employe) other;
        return getName().equals(e.getName()) && salary==e.salary;

    }

}

class Manager extends Employe
{
    private double bonus;
    public Manager (String n, double s)
    {
        super(n,s);
        bonus=0;
    }
        @Override
    public String getDescription()
    {
        return "Manager s zarplatoi = "+super.getSalary()+ " a tak je bonus = "+bonus;
    }
    public void setBonus(double b)
    {
        bonus=b;
    }

    @Override
    public double getSalary()
    {
        double s=super.getSalary();
        return s+bonus;
    }

     @Override
    public boolean equals(Object other)
    {
        if (!super.equals(other)) return false;
        Manager m = (Manager) other;
        return bonus==m.bonus;
    }
    
}
class Students extends Person
{
    private String major;
    public Students(String n,String m)
    {
        super(n);
        major=m;
    }
    public String getDescription()
    {
        return "Student s professiei - "+major;
    }
   
    @Override
    public boolean  equals(Object other)
    {
        if (this==other) return true;
        if (other==null) return false;
        if (getClass()!= other.getClass()) return false;
        Students e =(Students) other;
        return getName().equals(e.getName()) && major.equals(e.major);

    }


}
class Children extends Person
{
    private int age;
    public Children(String n, int i)
    {
        super(n);
        age=i;
    }
        public String getDescription()
    {
        return "Children. Ego vozrast = "+age;
    }

    @Override
    public boolean  equals(Object other)
    {
        if (this==other) return true;
        if (other==null) return false;
        if (getClass()!= other.getClass()) return false;
        Children e =(Children) other;
        return getName().equals(e.getName()) && age==e.age;

    }


}

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
         Person[] people = new Person[9];
        people[0] = new Employe("Pupkin S.E.", 50000);
        Manager m = new Manager("Sorokin I.I.", 60000);
        m.setBonus(10000);
        people[1]=m;
        people[2] = new Employe("Ivaniv P.I.", 35000);
        people[3] = people[1];
        people[4] = new Children("Petrov E.R.", 12);
        people[5] = people[1];
        people[6] = people[4];
        people[7] = new Students("Sergeev E.A.", "computer since");
        people[8] = people[7];
        for (int i = 0;i<people.length;i++)
        {
           Person e = people[i];
           System.out.println(i+" Name: "+e.getName()+", "+e.getDescription());
        }
        System.out.println("-----------");
        for (int i = 0;i<people.length;i++)
        {
            System.out.print(i);
            for (int j = 0;j<people.length;j++)
            {
                if (people[i].equals(people[j]));
                System.out.print(" = "+j);
            }
            System.out.println();
        }
        System.out.println("-----------");

    }

}


при вызове метода equals происходить не то, что нужно в чем проблема??
Заранее спасибо!

Это сообщение отредактировал(а) Midav88 - 11.8.2011, 15:17
PM MAIL   Вверх
ashain
Дата 11.8.2011, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 3.7.2011

Репутация: нет
Всего: 1



Совет - пусть IDE сгенерирует equals.
первое что бросилось в глаза это проверка на null уже после сравнения с исходным объектом. странный подход.
PM MAIL   Вверх
4epT
Дата 12.8.2011, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



Вот этот метод разве корректно написан ?

Цитата

@Override
    public boolean equals(Object other)
    {
        if (!super.equals(other)) return false;
        Manager m = (Manager) other;
        return bonus==m.bonus;
    }



Посмотри в main метод, тот if в котором у тебя происходит equals, после закрытия if у тебя сразу идет ";" .....

Это сообщение отредактировал(а) 4epT - 12.8.2011, 11:25
PM MAIL   Вверх
Midav88
Дата 12.8.2011, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.5.2011

Репутация: нет
Всего: нет



Цитата(4epT @ 12.8.2011,  11:16)
Вот этот метод разве корректно написан ?

Цитата

@Override
    public boolean equals(Object other)
    {
        if (!super.equals(other)) return false;
        Manager m = (Manager) other;
        return bonus==m.bonus;
    }

а что в нем не так?
PM MAIL   Вверх
4epT
Дата 12.8.2011, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



метод пока что оставим в покое ... многое зависит от того как ты хочешь сравнивать Employ и manager.


Посмотри на свой if:

Код

if (people[i].equals(people[j]));
                System.out.print(" = " + j);


сразу после if идет ";" что не верно .. System.out.print будет выполнен в любом случае
PM MAIL   Вверх
Midav88
Дата 12.8.2011, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.5.2011

Репутация: нет
Всего: нет



спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1035 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.