Как закончить while l oop, когда player1 или player2 введут «Q»? - PullRequest
0 голосов
/ 18 июня 2020

Я застрял в той части игры, где я использую while l oop, а чтобы завершить l oop и получить результаты игры, я хочу, чтобы "player1" или "player2" вводили " Q ", поэтому я попытался сделать это вот так:

if (player1.equals("Q") || player2.equals("Q")){
    go = false; //go is a boolean variable 
}

Кажется, это не работает, так как мне нужно ввести« Q »для игроков player1 и player2, чтобы игра закончилась, но вместо этого я просто хочу, чтобы либо из них вводили «Q», и игра остановится.

Код:

import java.util.Scanner;

public class Team {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Soccer Game Between 2 Teams");
        System.out.println("Win is 2 points" + "\n" + "Loss is worth 0 points" + "\n" + "Overtime is worth 1 point");
        System.out.println("Type W, O, or L" + "\n" + "Type Q to end the game");
        int pointsw = 0;
        int pointsl = 0;
        int pointso = 0;
        int pointsw2 = 0;
        int pointsl2 = 0;
        int pointso2 = 0;
        int totalpoints = 0;
        int totalpoints2 = 0;
        int counter = 0;
        int counter2 = 0;
        boolean go = true;
        System.out.println("\n" + "Enter team one:");
        String phrase = keyboard.next();
        System.out.println("\n" + "Enter team two:");
        String phrase2 = keyboard.next();
        System.out.println();
        while (go) {
            System.out.println("Enter " + phrase + " Result:");
            String team1 = keyboard.next();
            System.out.println("Enter " + phrase2 + " Result");
            String team2 = keyboard.next();
            if (team1.equals("W") || team1.equals("w")) {
                pointsw += 2;
            } else if (team1.equals("O") || team1.equals("o")) {
                pointso += 1;
            } else if (team1.equals("L") || team1.equals("l")) {
                pointsl += 0;
            }
            counter++;
            if (team2.equals("W") || team2.equals("w")) {
                pointsw2 += 2;
            } else if (team2.equals("O") || team2.equals("o")) {
                pointso2 += 1;
            } else if (team2.equals("L") || team2.equals("l")) {
                pointsl2 += 0;
            }
            counter2++;
            totalpoints = pointsw + pointso + pointsl;
            totalpoints2 = pointsw2 + pointso2 + pointsl2;
            if (team1.equals("Q") || team2.equals("Q")) {
                go = false;
                if (totalpoints > totalpoints2) {
                    System.out.println(phrase + " wins with " + totalpoints + " points");
                    System.out.println("It took " + phrase + " " + counter + " rounds to win");
                } else if (totalpoints < totalpoints2) {
                    System.out.println(phrase2 + " wins with " + totalpoints2 + " points");
                    System.out.println("It took " + phrase2 + " " + counter2 + " rounds to win");
                } else if (totalpoints == totalpoints2) {
                    int totalrounds = counter + counter2;
                    System.out.println("It is tie game between " + phrase + " and " + phrase2);
                    System.out.println("The game lasted till " + totalrounds + " rounds");
                }
            }
        }
    }
}

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Вам следует реорганизовать свой код:

    while (true) {
        System.out.println("Enter " + phrase + " Result:");
        String team1 = keyboard.next().toLowerCase();
        if ("q".equals(team1)) {
            break;
        }
        System.out.println("Enter " + phrase2 + " Result");
        String team2 = keyboard.next().toLowerCase();
        if ("q".equals(team2)) {
            break;
        }
        if (team1.equals("w")) {
            pointsw += 2;
        } else if (team1.equals("o")) {
            pointso += 1;
        } else if (team1.equals("l")) {
                pointsl += 0;
        }
        counter++;
        if (team2.equals("w")) {
            pointsw2 += 2;
        } else if (team2.equals("o")) {
            pointso2 += 1;
        } else if (team2.equals("l")) {
            pointsl2 += 0;
        }
        counter2++;
        totalpoints = pointsw + pointso + pointsl;
        totalpoints2 = pointsw2 + pointso2 + pointsl2;
    } // loop completed

    if (totalpoints > totalpoints2) {
        System.out.println(phrase + " wins with " + totalpoints + " points");
        System.out.println("It took " + phrase + " " + counter + " rounds to win");
    } else if (totalpoints < totalpoints2) {
        System.out.println(phrase2 + " wins with " + totalpoints2 + " points");
        System.out.println("It took " + phrase2 + " " + counter2 + " rounds to win");
    } else if (totalpoints == totalpoints2) {
        int totalrounds = counter + counter2;
        System.out.println("It is tie game between " + phrase + " and " + phrase2);
        System.out.println("The game lasted till " + totalrounds + " rounds");
    }
0 голосов
/ 18 июня 2020

Я не совсем уверен, но я думаю, что проблема в том, что после того, как игрок 1 / игрок 2 скажет «Q», сканер все еще ожидает чтения следующей строки.

        String phrase = keyboard.next();
            System.out.println("\n"+"Enter team two:");
        String phrase2 = keyboard.next();//if player 1 types q this next() method must be resolved before it will continue to the logic

поэтому добавьте Оператор if перед игрой 2 спрашивает, набрал ли игрок 1 «Q», если да, подсчитайте очки и завершите игру, если игрок 1 не набрал «Q», используйте оператор else, чтобы продолжить ход игрока 2

...