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

  • 4
  • Недоступна
Тео Баслим, полковник в отставке, в юности участвовал в боях, и теперь ему стало скучно. Он узнал, что его соседка Светочка Валерьевна завела полтысячи котов, и решил предложить ей устраивать бескровные кошачьи бои (на кровные она бы не пошла). Дело за малым: нам нужно реализовать механизм драки котов в зависимости от их веса, возраста и силы.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (669)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Konstantin Kobyakov
Уровень 6
14 мая, 11:34
я вообще нихера не понял
p90x
Уровень 7
25 марта, 13:03
Поясните плиз кто-нибудь, что не так return (this.age > anotherCat.age ? 1 : 0)+(this.weight > anotherCat.weight ? 1 : 0)+(this.strength > anotherCat.strength ? 1 : 0) > 0; Ответ : Убедись, что кот выигрывает бой, если он превосходит противника по двум или трем параметрам.
Никита
Уровень 9
25 марта, 19:48
Все так, просто некорректное ТЗ с ожидаемым результатом не бьется. Проходит вариант через Integer.compare(x,y)
p90x
Уровень 7
26 марта, 22:53
я в итоге запихал решение которое от меня ждали( через compare), просто хотелось по своему
zh55
Уровень 9
2 января, 22:05
Все разобрался, забыл вывод убрать
zh55
Уровень 9
2 января, 21:59
Подскажите, вроде должно корректно работать, проверку не проходит. Почему?
miller09
Уровень 7
25 ноября 2022, 09:55
int i=0, j=0; if ((this.age>anotherCat.age)){ i++; } else if ((this.age<anotherCat.age)) { j++;} if ((this.strength>anotherCat.strength)){ i++; }else if ((this.strength<anotherCat.age)){ j++;} if ((this.weight>anotherCat.weight)){ i++; }else if ((this.strength<anotherCat.age)) { j++;} if (i>j){ return true; } else return false; ПОЧЕМУ НЕ РАБОТАЕТ??????????????????
Marina
Уровень 16
12 ноября 2022, 16:56
Неоднозначная задача. Почему надо, чтобы все показатели нашего кота были больше, и только тогда задача решена верно? То есть, если кот более старый и более толстый, он победитель? Я бы решила наоборот. Потеряла на этом попытку.
Dinislam Aminev
Уровень 16
Expert
25 апреля, 06:24
Согласен!
Pavel Mordovin
Уровень 8
31 марта 2022, 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 апреля 2022, 06:59
Народ, Integer.compare шо за зверь? Ноги растут от Метода compareTo? Правильное решение мне нравится, но я его не совсем понимаю, как мне кажется. В правильном решении видно, что Integer.compare сравнивает параметры котов. Я почитал про метод compareTo, но ведь он больше подходит для сортировки, чуток запутался. Если кто найдёт время, киньте дураку ссылок или поясните за compare 🙃
Azat Sultanov
Уровень 20
7 мая 2022, 20:29
Метод compare прописан в классе Integer и он сравнивает 2 числа, если первое число больше то он возвращает 1, если меньше то -1 и если числа равны то возвращает 0. Потом в переменной score мы суммируем полученные значения и если < 0 то наш первый кот проиграл, если > 0 то соотвественно выиграл
Dmitrii
Уровень 11
11 октября 2022, 20:27
return Integer.compare(this.age, anotherCat.age) + Integer.compare(this.weight, anotherCat.weight) + Integer.compare(this.strength, anotherCat.strength) > 0;
Евгений N
Уровень 15
28 марта 2022, 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 хорошие тестировщики!!
Владимир
Уровень 35
12 января 2022, 11:15
создал 2 счётчика, и 3 иф элс; если у первого кота параметр больше, счётчик1++, элс иф у первого кота параметр меньше счётчик2++. И так на каждый параметр, в конце ретурн счётчик1>счётчик2
Евгений N
Уровень 15
28 марта 2022, 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
Уровень 15
28 марта 2022, 10:31
попробую угадать: ты не все 6 параметров инициализируешь? false если хотя бы в одной паре 0>0
Евгений N
Уровень 15
28 марта 2022, 10:34
потому что в лекции про булевы типы писали: плохой тон: if a>b return true else return false хороший: return a> b