Так что программа, которую я пытаюсь написать, - это что-то вроде этого. Противник выбирает номер случайным образом, где каждый номер соответствует человеку. то пользователь делает то же самое. то выход должен показать, что пользователь выбирает, какой противник выбрал и кто выиграл этот матч. его похожий на камень, ножницы для бумаги, но с добавлением еще нескольких вещей. я также должен показать количество раундов и сколько раз выиграл пользователь. Но моя проблема в этом. Независимо от того, что мой вклад, он продолжает говорить, что я сделал недействительный выбор и выбрать его снова. Это то, что у меня есть.Повторяя независимо от того, как я ввожу
public static void main(String[] args) {
int game=0;
int won = 0;
int opponent;
Random rand = new Random();
System.out.println("Welcome to the game. Here are the rules:");
Scanner in = new Scanner(System.in);
rules();
choices();
int choice = selected(in);
while (choice !=0) {
rules();
choices();
choice = selected(in);
opponent = opp();
result(choice, opponent, in);
game+=1;
}
System.out.println("You played " +game+" games.");
System.out.println("Quitting");
}
public static void rules(){
System.out.println("\nFlurg beats Stuga and Kvartal");
System.out.println("Stuga beats Kvartal");
System.out.println("Kvartal beats Lerberg");
System.out.println("Lerberg beats Flurg and Stuga");
System.out.println("The computer wins in the event of a tie.");
System.out.println();
}
public static int opp(){
Random rand = new Random();
int opponent = rand.nextInt(4)+1;
return opponent;
}
public static void choices(){
System.out.println("Please select your choice:");
System.out.println("'1' for Flurg ");
System.out.println("'2' for Stuga ");
System.out.println("'3' for Kvartal ");
System.out.println("'4' for Lerberg ");
System.out.println("'0' to Quit ");
System.out.print("Selection: ");
}
public static int selected(Scanner in){
int choice = in.nextInt();
while (choice != 1 && choice != 2 &&
choice != 3 && choice != 4 &&
choice != 0) {
System.out.println("Invalid choice");
choices();
choice = in.nextInt();
}
return choice;
}
public static int result(int choice, int opponent, Scanner in) {
int won=0;
System.out.print("You picked:" +choice+". Opponent picked:" +opponent+".");
if(choice == 1 && (opponent == 2) || (opponent == 3)){
System.out.println("You won!");
won+=1;
}
else if(choice == 2 && opponent == 3){
System.out.println("You won!");
won+=1;
}
else if(choice == 3 && opponent == 4){
System.out.println("You won!");
won=+1;
}
else if(choice == 4 && (opponent == 1 || opponent == 2)){
System.out.println("You won!");
won+=1;
}
else {
System.out.println("You lost!");
}
return won;
}
}
EDIT Так я установил именно то, что мне сказали о !=1
части. но он снова зацикливается. по какой-то причине, он не хочет, чтобы запустить result()
EDIT # 2 Основное также было зафиксировано с подобной проблемой.
Я добавил несколько строк, основываясь на том, что мне сказали EDIT #.
Вы читаете 'choice' как int, а не char. '1! = '1'', вам нужно удалить одинарные кавычки из своих номеров в этом выражении while. – sgbj