День добрый!
Буду крайне признателен если мне кто-нибудь объяснит, почему цикл do-while не проходит валидацию (строки 51-62)? Синтаксически все верно, логически тоже, в консоль выводится верный результат, но задачу все равно не пропускает.
Заранее спасибо!
package com.javarush.task.pro.task06.task0622;
import java.util.Scanner;
/*
Диабло (1)
*/
public class Solution {
public static String getFirstPositionPhrase = "Помоги Амиго определить, где спрятался Диабло? Введи номер позиции (1, 2, 3 или 4):";
public static String getPositionPhrase = "Диабло не обнаружен. Давай попробуем снова. Введи номер позиции (1, 2, 3 или 4):";
public static String findDiabloPhrase = "Амиго обнаружил Диабло.";
public static String diabloDefendPhrase = "Амиго атакует. Диабло отбил атаку Амиго и нанес ответный удар.";
public static String amigoAttackPhrase = "Удар Амиго достиг цели. Диабло потерял 3 жизни.";
public static String winPhrase = "Амиго одержал победу над Диабло и выбил из его головы загадочный кристалл.";
public static String loosePhrase = "Диабло победил Амиго.";
public static int diabloPosition;
public static void findDiablo(){
System.out.println(getFirstPositionPhrase);
Scanner scan = new Scanner(System.in);
while (true){
if (scan.nextInt() == diabloPosition){
System.out.println(findDiabloPhrase);
break;
} else {
System.out.println(getPositionPhrase);
}
}
}
public static int amigoLives = 9;
public static int diabloLives = 9;
public static void amigoLostLife(){
amigoLives--;
}
public static void diabloLostLife(){
diabloLives -= 3;
}
public static int amigoAttacks(){
return getRandomNumber(3);
}
public static int diabloDefends(){
return getRandomNumber(3);
}
public static void battle(){
do{
if (amigoAttacks() != diabloDefends()){
diabloLostLife();
System.out.println(amigoAttackPhrase);
} else {
amigoLostLife();
System.out.println(diabloDefendPhrase);
}
}
while (amigoLives > 0 && diabloLives > 0);
}
public static void main(String[] args) {
diabloPosition = getRandomNumber(4);
findDiablo();
battle();//напишите тут ваш код
}
public static int getRandomNumber(int range) {
return (int) (Math.random() * range) + 1;
}
}
do ... whileисполняется по крайней мере один раз, а у Вас в условиях задачи сказано: Метод battle() не должен ничего делать, если кто-то из соперников не имеет "жизней".