• ,

level05.lesson05.task02 Помогите пожалуйста

Реализовать метод fight
Реализовать метод boolean fight(Cat anotherCat):
реализовать механизм драки котов в зависимости от их веса, возраста и силы.
Зависимость придумать самому. Метод должен определять, выиграли ли мы (this) бой или нет,
т.е. возвращать true, если выиграли и false — если нет.
Должно выполняться условие:
если cat1.fight(cat2) = true, то cat2.fight(cat1) = false

У меня несколько вопросов (заранее спасибо добрые люди :) :

1) программа сработала нормально вивела «true», но проверку не прошла.
2) параметр (Cat anotherCat) ето такое правило написание параметра для взаимодействия обєктов?
3) почему когда пишем нужно писать ссилку на параметри обєкта Cat с помощью this.*
Код ниже
public class Cat
{
public String name;
public int age;
public int weight;
public int strength;
public static void main (String[] args) {
Cat cat1 = new Cat(10, 20, 30);
Cat cat2 = new Cat(5, 10, 15);
System.out.print (cat1.fight(cat2));
}

public Cat(int a, int w, int s)
{
this.age = a;
this.weight = w;
this.strength = s;
}

public boolean fight (Cat anotherCat)
{
//Напишите тут ваш код
int skillCat1 = this.age+this.weight+this.strength;
int skillCat2 = anotherCat.age+anotherCat.weight+anotherCat.strength;
if (skillCat1 > skillCat2) {
return true;
}
else {
return false;
}
}
}

6 комментариев

VasylPylypiv
  • VasylPylypiv
  • 0
  • Комментарий отредактирован 2015-05-06 20:15:25 пользователем VasylPylypiv
2) параметр (Cat anotherCat) ето такое правило написание параметра для взаимодействия обєктов?
В этом месте говорится что anotherCat это экземпляр класа Cat, такой же как и cat1 и другие. Поэтому их параметры можна сравнивать между собой.
3) почему когда пишем нужно писать ссилку на параметри обєкта Cat с помощью this.*
Этим выражением мы заменяем выражения вида cat1.age = a;. Поскольку указание параметров идет в конструкторе для конкретного экземпляра, чтобы не писать имя экземпляра пишут this.

И перед тем как задавать вопрос, не ленись воспользоваться поиском. В большинстве случаев, для нижних уровней, до 10, ответы уже есть, нужно просто поискать.
ikratkoe
2. в Jave не существует логического выражения «Cat anotherCat», это просто описание аргумента функции — anotherCat — переменная типа Cat.

3. this используется для явного указания видимости принадлежности переменной текущему классу, нужно, что бы, избежать выражений типа.
age = age; где age — разные переменные.
в твоем варианте должно работать и без this.
zuzka
  • zuzka
  • 0
  • Комментарий отредактирован 2015-05-06 22:36:52 пользователем zuzka
основное условие задачи:
1. метод возвращает булевый тип
2. если cat1.fight(cat2) = true, то cat2.fight(cat1) = false

на второе условие основное внимание!!! если по какому-то параметру кот1 выигрыввает, то по этому же параметру кот2 должен проигрывать.

мой код:
<code>
public boolean fight (Cat anotherCat)
    {
        if(this.strength > anotherCat.strength){
            return true;
        }else{
            return false;
        }

    }
</code>
ничего больше придумывать нет необходимости)
savand
1) не зовсім зрозуміло, чому метод main вписаний у класі Cat. (хоча, можливо це за вихідним кодом)
2) в конструкторі ініціалізуйте name, або ж приберіть таку властивість з класу, це також може завадити проходженню тесту на сервері
nikolai_sv
  • nikolai_sv
  • 0
  • Комментарий отредактирован 2015-08-08 23:41:05 пользователем nikolai_sv
Подскажите кто сможет пожалуйста.
Задача прошла тестирование на сервере, но IDEA не пропускает пишет вот это:
<code>
Information:Using javac 1.8.0_45 to compile java sources.
Information:08.08.2015 23:32 - Compilation completed with 1 error and 0 warnings in 6s 22ms.
Error:Cannot compile Groovy files: no Groovy library is defined for module 'JavaRushHomeWork'.
</code>
nikolai_sv
Разобрался.
Всем удачных поисков решений.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.