【问题标题】:Why does this always find them to be all true?为什么这总是发现它们都是真的?
【发布时间】:2012-02-19 19:15:28
【问题描述】:
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.");
                }

            }
        }
}

好的,我已经检查了很多次,但是每次运行它时,它都会显示所有播放器都是正确的?即使在它清楚地打印出玩家猜测的实际数字之前,它们也不是真的。

【问题讨论】:

    标签: java if-statement while-loop boolean


    【解决方案1】:

    您忘记在每次循环后将三个 isRight 变量重置为 false

    所以他们在之前的运行中保持true

    【讨论】:

      【解决方案2】:

      改变

      if (guessp1 == targetNumber) {
          p1isRight = true;
      }
      
      if (guessp2 == targetNumber) {
          p2isRight = true;
      }
      
      if (guessp3 == targetNumber) {
          p3isRight = true;
      }
      

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

      按照您当前代码的方式,当您再次执行循环时,您永远不会覆盖“真”值。

      【讨论】:

      • 谢谢!我认真地直接从这本书中复制了它......不敢相信我没有注意到这一点。
      猜你喜欢
      • 2022-11-03
      • 2015-08-19
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多