Я пытаюсь создать игру «ножницы-бумага-камень» на Java с циклом do-while. Компьютер случайным образом выберет 1, и пользователь сделает свой выбор. Условие выхода: пользователь выигрывает дважды (userWin
) или компьютер выигрывает дважды (compWin
). Если есть ничья, ни один счетчик не увеличивается.
// Scissors, paper, stone game. Best of 3.
// scissors = 0; paper = 1; stone = 2;
import java.util.Scanner;
public class Optional2 {
public static void main(String[] args) {
int userWin = 0;
int compWin = 0;
do {
//comp choice
int comp = 1; //TEST CASE
// int comp = (int) (Math.random() * (2 - 0 + 1) + 0);
//user choice
System.out.println("0 for scissors, 1 for paper, 2 for stone");
Scanner sc = new Scanner(System.in);
int user = sc.nextInt();
//Draw
if (comp == user) {
System.out.println("Draw");
//Win =)
} else if (comp == 0 && user == 2 || comp == 1 && user == 0 ||
comp == 2 && user == 1) {
System.out.println("WIN!");
userWin++;
//Lose =(
} else {
System.out.println("Lose =(");
compWin++;
}
} while (compWin < 2 || userWin < 2);
System.out.println("You won " + userWin + " times!");
}
}
Для int comp
оно должно быть случайным, но я устанавливаю его на 1 (бумага) для удобства тестирования.
Однако в настоящее время из цикла выйдет только 1-е условие, если оно станет истинным. Я ожидаю, что 2-е условие также выйдет из цикла, если оно станет истинным с оператором ||
, но цикл просто продолжает зацикливаться, даже если оно выполняется.
т.е. если я поставлю while (userWin < 2 || compWin < 2)
, он выйдет, если пользователь выиграет дважды, но не если компьютер выиграет дважды. Если я поставлю while (compWin ‹ 2 || userWin ‹ 2), он завершится, если компьютер выиграет дважды, но не если пользователь выиграет дважды.
Я тоже пытался изменить его на while ((userWin < 2) || (compWin < 2))
, но это не сработало.
||
, что означает или, на&&
, что означает и - person Alex Salauyou   schedule 03.03.2016compWin
иuserWin
равны 2 или больше? - person Alderath   schedule 03.03.2016if
и переключить логическую переменную в качестве условия выхода? - person user3479671   schedule 03.03.2016