Реализовать метод fight

  • 4
  • Недоступна
Тео Баслим, полковник в отставке, в юности участвовал в боях, и теперь ему стало скучно. Он узнал, что его соседка Светочка Валерьевна завела полтысячи котов, и решил предложить ей устраивать бескровные кошачьи бои (на кровные она бы не пошла). Дело за малым: нам нужно реализовать механизм драки котов в зависимости от их веса, возраста и силы.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (659)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Pavel Mordovin
Уровень 8, Санкт-Петербург, Россия
31 марта, 10:32
После просмотра правильного решения в голове звучит песня Тото Кутуньо - Лошате ми кампаре))) Lasciatemi campare, con la chitarra in mano. Lasciatemi campare ...Sono un italiano! Buongiorno Italia gli spaghetti al dente Правда у него было кантаре (cantare) 😁 Че хочу сказать/спросить. Народ, а Вы видели правильное решение этой задачи "Реализовать метод fight"? там предлагается решить так:
int ageScore = Integer.compare(this.age, anotherCat.age);
        int weightScore = Integer.compare(this.weight, anotherCat.weight);
        int strengthScore = Integer.compare(this.strength, anotherCat.strength);

        int score = ageScore + weightScore + strengthScore;
далее вовзращаем score больше нуля.
Я удивлён, а что так можно было?))) коротко, элегантно и вроде даже понятно, кроме compare) Я что-то упустил? Или может кто-то уже изучил представленное правильное решение? Поделитесь тут информацией по правильному решению, плииииз
Pavel Mordovin
Уровень 8, Санкт-Петербург, Россия
7 апреля, 06:59
Народ, Integer.compare шо за зверь? Ноги растут от Метода compareTo? Правильное решение мне нравится, но я его не совсем понимаю, как мне кажется. В правильном решении видно, что Integer.compare сравнивает параметры котов. Я почитал про метод compareTo, но ведь он больше подходит для сортировки, чуток запутался. Если кто найдёт время, киньте дураку ссылок или поясните за compare 🙃
Azat Sultanov
Уровень 7, Казань
7 мая, 20:29
Метод compare прописан в классе Integer и он сравнивает 2 числа, если первое число больше то он возвращает 1, если меньше то -1 и если числа равны то возвращает 0. Потом в переменной score мы суммируем полученные значения и если < 0 то наш первый кот проиграл, если > 0 то соотвественно выиграл
Евгений N
Уровень 12
28 марта, 10:25
Проверь, что метод fight работает правильно, если у котов два параметра равны, и только один отличается. пришлось проинициализовать 0, потом проверочный код
Cat cat1 = new Cat();
Cat cat2 = new Cat();
cat1.age =1;
System.out.print( cat1.fight(cat2) );
cat1.age =0; cat1.weight =1;
System.out.print( cat1.fight(cat2) );
cat1.weight =0; cat1.strength =1;
System.out.print( cat1.fight(cat2) );
и действительно truetruefalse хорошие тестировщики!!
Владимир
Уровень 15, Пермь
12 января, 11:15
создал 2 счётчика, и 3 иф элс; если у первого кота параметр больше, счётчик1++, элс иф у первого кота параметр меньше счётчик2++. И так на каждый параметр, в конце ретурн счётчик1>счётчик2
Евгений N
Уровень 12
28 марта, 10:42
однако у тебя 6 штук if ! но зато решение простое и понятное. я запихал всё в один return в котором по 6 раз &&, >, == и 5 раз ||
Дмитрий
Уровень 8
28 декабря 2021, 09:21
public boolean fight(Cat anotherCat) { if ((this.age > anotherCat.age) && (this.strength > anotherCat.strength) && (this.weight > anotherCat.weight)) return true; подскажите, почему условие всегда false (так IDE ругается)?
Евгений N
Уровень 12
28 марта, 10:31
попробую угадать: ты не все 6 параметров инициализируешь? false если хотя бы в одной паре 0>0
Евгений N
Уровень 12
28 марта, 10:34
потому что в лекции про булевы типы писали: плохой тон: if a>b return true else return false хороший: return a> b
Сергей Калюжный
Уровень 10, Киев
12 октября 2021, 14:05
Отличная задача. Решение со счетчиком соответствует уровню лекции. Пока выдумывать велосипед не стоит.
Кирилл
Уровень 7, Иркутск
29 сентября 2021, 18:32
if (((this.age + this.weight + this.strength))>((anotherCat.age + anotherCat.weight + anotherCat.strength))) return (true); else return (false); подскажите пожалуйста, что не так? В методе fight реализовать механизм драки котов в зависимости от их веса, возраста и силы согласно условию. Это условие не проходит
Viktor
Уровень 16, Минск
15 октября 2021, 15:48
в условиях победитель определяется по лучшим показателям большего количества критериев, а не большей сумме показателей (например 1 кот - 5, 1, 1; 2 кот - 1, 2, 2. по условию задачи должен победить второй, по вашему решению - победит первый)
Сергей
Уровень 7
29 сентября 2021, 17:10
30 минут мучений и 7 попыток из-за неточного задания. Для правильного решения все показатели this.кота должны быть больше 2-го. И if вам в помощь.
Anna Makarova
Уровень 13, Praha, Чехия
24 декабря 2021, 18:45
Спасибо! Я-то думала, что старый жирный кот проиграет молодому)))
Александр
Уровень 5, Москва
6 сентября 2021, 15:47
Всем привет! Кто может объяснить почему нет запятой в перечислении параметров -"public boolean fight(Cat anotherCat)"? Или подскажите, где почитать....)
Михаил Кладовщик 80lvl
13 сентября 2021, 20:45
Передается один аргумент Cat(это тип переменной) anotherCat(это сама переменная)
Mark T
Уровень 16, Санкт-Петербург, Россия
24 августа 2021, 13:50
короче мне надоело. я 2 часа трачу на задачу, решение которой я в принципе не могу знать. в итоге получаю готовое решение, а там Integer.compare. круто
Валентин
Уровень 18
25 августа 2021, 05:20
Задача решается без Integer.compare просто через if и счетчики
Анастасия
Уровень 17, Москва
31 июля 2021, 11:28
Нужно ставить более точные критерии. В моем понимание, чем старше кот, тем он слабее, значит, проигрывает более молодому в этом показателе.