Ну вообщем так: В своем решении я реализовал две функции - одна для проведения боев и выяснения победителя или выиграл ли вообще кто. Вторая функция выводит на экран результат работы первой функции. Проверка говорит, что я не проводил трех боев. В чем проблема?
Вывод решения:
Никто не победил
Витя победил
Витя победил
package com.javarush.task.task05.task0505;
/*
Кошачья бойня
*/
public class Solution {
private static Cat getWinner(Cat cat1,Cat cat2)
{
boolean win1=cat1.fight(cat2);
boolean win2=cat2.fight(cat1);
//System.out.println(cat1.name+"="+win1+";"+cat2.name+"="+win2);
if (win1 && !win2) {
return cat1;
} else if (win2 && !win1) {
return cat2;
} else {
return null;
}
}
private static void printBattleResult(Cat cat1,Cat cat2)
{
Cat winner=getWinner(cat1,cat2);
if (winner!=null)
System.out.println(winner.name+" победил");
else System.out.println("Никто не победил");
}
public static void main(String[] args) {
Cat c1=new Cat("Вася",2,5,20);
Cat c2=new Cat("Коля",2,4,15);
Cat c3=new Cat("Витя",3,6,30);
printBattleResult(c1,c2);
printBattleResult(c2,c3);
printBattleResult(c1,c3);
}
public static class Cat {
protected String name;
protected int age;
protected int weight;
protected 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 ageAdvantage = this.age > anotherCat.age ? 1 : 0;
int weightAdvantage = this.weight > anotherCat.weight ? 1 : 0;
int strengthAdvantage = this.strength > anotherCat.strength ? 1 : 0;
int score = ageAdvantage + weightAdvantage + strengthAdvantage;
return score > 2; // return score > 2 ? true : false;
}
}
}