Подскажите пожалуйста, что можно почитать что бы понять почему метод fight вызывает параметры класса Cat и сравнивает их с другой переменной? не могу понять второй день. Как он выбирает по умолчанию объекты?
public class Cat {
public int age;
public int weight;
public int strength;
public Cat() {
}
public boolean fight(Cat anotherCat) {
//напишите тут ваш код
boolean a = false;
return ((age + strength)* weight > (anotherCat.age + anotherCat.strength) * anotherCat.weight);
}
public static void main(String[] args) {
}
}
Maxim Alexeevich
9 уровень
Объяснение решения.
Архивный
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
vinslerExpert
20 октября 2018, 10:25полезный
примерно идентично этому:
а в коде у вас будет примерно так:
+1
Vlad
20 октября 2018, 10:17полезный
Метот fight(Cat anotherCat) определен в классе Cat, в этом же классе определены переменные(поля) класса - age, weight, strength они определены как public, к ним можно обращаться на прямую, что мы и делаем в методе fight. С другой стороны в метод fight передется экземпляр класса Cat anotherCat - в качестве параметра. У anotherCat есть свои переменные(поля), age, weight, strength мы к ним обращаемся как - anotherCat.age, anotherCat.strength, anotherCat.weight). Почитать любую книжку по основам ООП, можно посмотреть обучающее видео и одновременно попрактиковаться в написании кода.
+3
hidden #598481
20 октября 2018, 10:14полезный
Так, что именно не ясно? Кто и какие объекты по-твоему выбирает и по какому умолчанию?
По-моему, ты не совсем понимаешь, что вообще у тебя в коде написано.
Смотри, ты говоришь, что у тебя есть некий класс Кот. Класс характеризует собой переменные, которые ты можешь создать.
В частности, ты говоришь, что каждый создаваемый кот (кот - это конкретный объект класса Кот) будет обладать целочисленными возрастом, весом и силой. При этом ты не создаешь конкретных объектов (конкретных котов), ты как бы теоретически описываешь, какими они будут и что будут уметь делать.
В частности они будут уметь драться. То есть каждый созданный кот может побить (когда fight() = true) или быть побитым (когда fight() = false) другим котом. Опять-таки, ты не описываешь конкретную драку, ты просто говоришь, как вычислить, кто из котов кого победит.
Внутри метода public boolean fight(Cat anotherCat) у тебя описано, как вычислить, какой из котов у тебя сильнее. Формула, насколько я помню, может быть произвольной, единственное условие - если cat1.fight(cat2) возвращает true, то cat2.fight(cat1) должен возвращать false. Кстати, строчка
у тебя не используется, ее можно удалить.
Далее. Метод fight() у тебя описан, но не вызывается. Это нормально. Это означает, что ты просто описал, как должны происходить драки, но не проводил ни одной, т.к. это и не требуется по условию задачи. Если бы нужно было вызывать метод:
Т.к. метод написан в классе Cat, то, чтобы его вызывать, тебе нужен был бы объект этого класса.
Ты бы создал нового кота Cat myCat1 = new Cat, объявил бы для него значения величин:
Для этого кота уже можно вызывать методы класса Cat. Но чтобы вызвать метод fight(), требуется в качестве аргумента этого метода передать еще один объект класса Кот. +7
hidden #598481
20 октября 2018, 10:14полезный
Поэтому котов тебе понадобилось бы два: Cat myCat2 = new Cat с аналогичным указанием значений полей для myCat2.
После этого уже можно вызывать метод: myCat1.fight(myCat2). Тем самым ты проверишь, может ли кот1 побить кота2 в соответствии с твоей формулой. То есть это не просто драка двух котов, а именно сравнение кота1 по отношению к коту2. Там, где указано anotherCat.age, берутся значения того кота, которого ты указал в качестве аргумента при вызове метода. Там где указано this.age - того кота, для которого был метод вызван. Кажется, тебя именно это интересовало, нет?
+5