Народ-мой мозг расплавился на этой задаче. Вернулся к нерешённым задачам с 22 уровня сюда. НО - ничего не понятно. Реально. Перед этой задачей следовало бы дать больше теории и задач на элемунты решения этойзадачи. В конейц добило как return score > 0; преобразуется в булеву функцию???? Булево выражение может принять только True/False, а 1 и 0 в Джаве не могут приравниываться к True/False,... Или я не правильно понимаю?
public boolean fight(Cat anotherCat){
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;
return score > 0;
2) Откуда в public boolean fight(Cat anotherCat) обьект anotherCat , Он нигде не обьявлен(или подразумевается, что мы сами напишем (Cat1 Cat2), вместо anotherCat ? Пожалуйста- обясните, не понятно совсем.
Реально- ну очень хотелось бы каких-то задач между этой и предыдущей задачей и пошаговой пробаботкой каждого момента, включая сравнение обьектов. переход от предыдущих к этим-просто экспоненциальный по сложности.
package com.javarush.task.jdk13.task05.task0501;
/*
Кошачья бойня(1)
*/
public class Solution {
public static class Cat {
private String name;
private int age;
private int weight;
private int strength;
public Cat (String name,int age,int weight,int strength){
this.name = name;
this.age = age;
this.weight = weight;
this.strength = strength;//напишите тут ваш код
}
public boolean fight(Cat anotherCat){
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;
return score > 0;
// System.out.println(score);
}
}
public static void main(String[] args) {
Cat Vasya =new Cat("Vasya", 10,5,10);
Cat Mursyk =new Cat("Mursyk",8,10,12);
Cat Ivan =new Cat(" Ivan",9,11,22);
}
}
fight(Cat anotherCat) { ... }.Ещё одно отличие от алгебры тут заключается в том, что в алгебре аргументы у функции это числа, и результаты - тоже числа. А в ООП - это объекты, то есть функция может принимать объекты разных типов и вернёт тоже какой-то объект определённого типа. Твой метод должен вернуть boolean. Чему равно anotherCat? Как и в алгебре, функция не знает, чему будут равны её аргументы. Функцию можно вызвать для конкретного значения, f(3) = 9. И метод можно вызвать для конкретного значения Это означает, что конкретно в этом случае anotherCat будет равно murzik, то есть murzik используется в качестве значения аргумента anotherCat. А "this" всегда ссылается на тот объект, у которого вызван метод. Поэтому в моём примере this будет ссылаться на объект vaska. Теперь про Оно не преобразуется в булеву функцию, сравнение - это и есть булева функция. Вот смотри, ты же понимаешь такой кодВнутри скобок у if нужно помещать какую-то булеву величину, и если она равна true, то выполнится блок кода, идущий после условия. Продолжение ниже, лимит символов.