2012-01-26 15 views
0
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."); 
       } 

      } 
     } 
} 

私はそれを何度も行っていますが、実行するたびにすべてのプレイヤーが正しいと表示されます。プレイヤーが推測した実際の数字がはっきりと表示される直前であっても、それは真実ではありません。これはいつも、それらが常に真実であることを見つけるのですか?

答えて

3

isRightの変数をループのゴーラウンドごとにfalseにリセットするのを忘れました。

したがって、前回の実行ではtrueのままです。あなたの現在のコードがある

3

変更

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

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

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

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

への道あなたは再びループを通過するとき、あなたは「真」の値を上書きすることはありません。

+0

ありがとうございます!私は真剣にそれをこの本からまっすぐにコピーしました...私はそれを気付かなかったとは信じられません。 – poetzmij

関連する問題