Почему это всегда находит их правдой? - PullRequest
0 голосов
/ 26 января 2012
public class GameLauncher {

    public static void main(String[] args) {
        GuessGame game = new GuessGame();
        game.startGame();
    }
}

public class Player {
    int number = 0;

    public void guess() {
        number = (int) (Math.random() * 10);
        System.out.println("I'm guessing " + number);
    }
}

public class GuessGame {


    public void startGame() {
        Player p1 = new Player();
        Player p2 = new Player();
        Player p3 = new Player();

        int guessp1 = 0;
        int guessp2 = 0;
        int guessp3 = 0;

        boolean p1isRight = false;
        boolean p2isRight = false;
        boolean p3isRight = false;

        int targetNumber = (int) (Math.random() * 10);
        System.out.println("I'm Thinking of a number between 1 and 10");

        while (true) {
            System.out.println("Number to guess is " + targetNumber);

            p1.guess();
            p2.guess();
            p3.guess();

            guessp1 = p1.number;
            System.out.println("Player one guessed " + guessp1);

            guessp2 = p2.number;
            System.out.println("Player two guessed " + guessp2);

            guessp3 = p3.number;
            System.out.println("Player three guessed " + guessp3);

            if (guessp1 == targetNumber) {

                p1isRight = true;
            }

            if (guessp2 == targetNumber) {
                p2isRight = true;
            }

            if (guessp3 == targetNumber) {
                p3isRight = true;
            }

            if (p1isRight || p2isRight || p3isRight) {
                System.out.println("We have a winner!");
                System.out.println("Was player one correct? "
                + p1isRight);
                System.out.println("Was player two correct? "
                + p2isRight);
                System.out.println("Was player three correct? "
                    + p3isRight);
                } else {
                    System.out.println("None them players were correct man.");
                }

            }
        }
}

Хорошо, я проходил через это много раз, но всякий раз, когда я запускаю его, на дисплее появляется сообщение, что все игроки были правы? Хотя прямо перед тем, как он четко напечатает фактическое число, которое догадались игроки, они не соответствуют действительности.

Ответы [ 2 ]

3 голосов
/ 26 января 2012

Изменение

if (guessp1 == targetNumber) {
    p1isRight = true;
}

if (guessp2 == targetNumber) {
    p2isRight = true;
}

if (guessp3 == targetNumber) {
    p3isRight = true;
}

до

p1isRight = guessp1 == targetNumber;
p2isRight = guessp2 == targetNumber;
p3isRight = guessp3 == targetNumber;

Как ваш текущий код, вы никогда не перезаписываете "истинное" значение при повторном прохождении цикла.

3 голосов
/ 26 января 2012

Вы забыли сбросить три isRight переменные на false после каждого цикла цикла.

Таким образом, они остаются true от предыдущих прогонов.

...