2017-10-02 1 views
-1


私はHead First Javaで作業しています。ランダムジェネレータは0になります。ここにクラスがあります: これはメインメソッドのクラスです。ランダムジェネレータは常に0になります(Java)

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

これは私の選手オブジェクトクラスです:

import java.util.Random; 

public class Player { 
    int number = 0; //Where the guess goes 

    public void guess() { 
     //random1 is in GuessGame 
     Random random2 = new Random(); 
     int number = random2.nextInt(10); 
     System.out.println("I'm guessing " + number); 
    } 
} 

は最後に、これはコードのほとんどが起こっているクラスです。

import java.util.Random; 

public class GuessGame { 
    //Guessgame has three instance variables for the three Player objects 
    Player p1; 
    Player p2; 
    Player p3; 

    public void startGame() { 
     //Create three Player objects and assign them to the three Player instance variables 
     p1 = new Player(); 
     p2 = new Player(); 
     p3 = new Player(); 
     //Declare three variables to hold the three guesses the players make 
     int guessp1 = 0; 
     int guessp2 = 0; 
     int guessp3 = 0; 
     //Declare three variables to hold a true or false based on the player's answer 
     boolean p1isRight = false; 
     boolean p2isRight = false; 
     boolean p3isRight = false; 
     //Make a "target" number that the players have to guess 
     Random random = new Random(); 
     //Generate a number between 0 and 9 
     int targetNumber = random.nextInt(10); 
     System.out.println("I'm thinking of a number between 0 and 9..."); 

     while (true) { 
      System.out.println("Number to guess is " + targetNumber); 
      //Call each player's guess() method 
      p1.guess(); 
      p2.guess(); 
      p3.guess(); 
      /* 
      Get each player's guess (the result of their guess() method 
      running) by accessing the number variable of each player 
      */ 
      guessp1 = p1.number; 
      guessp2 = p2.number; 
      guessp3 = p3.number; 
      System.out.println("Player one guessed " + guessp1); 
      System.out.println("Player two guessed " + guessp2); 
      System.out.println("Player three guessed " + guessp3); 
      /* 
      Check each player's guess to see if it matches the target number. If a player is right, then set that player's variable to be true (remember, we set it false by default) 
      */ 
      if (guessp1 == targetNumber) { 
       p1isRight = true; 
      } 
      if (guessp2 == targetNumber) { 
       p2isRight = true; 
      } 
      if (guessp3 == targetNumber) { 
       p3isRight = true; 
      } 
      //If player one OR player two OR player three is right... (the || operator means OR) 
      if (p1isRight || p2isRight || p3isRight) { 
       System.out.println("We have a winner!"); 
       System.out.println("Player one got it right? " + p1isRight); 
       System.out.println("Player two got it right? " + p2isRight); 
       System.out.println("Player three got it right? " + p3isRight); 
       System.out.println("Game is over."); 
       break; //Game over, so break out of the loop 
      } 
      else { 
       //We must keep going because nobody got it right! 

       System.out.println("Players will have to try again."); 
      } //end if/else 
     } //end loop 
    } //end method 
    } //end class 

私はこれらのフォーラムに新しいですので、私は何か間違ったことをしたなら、私に知らせてください:) これが動作しない理由を誰もが知っていますか?ラインでinstance variable

で おかげで、 LYFE

+0

を参照してください。主な方法があるか、別のプログラムから呼び出すことです –

答えて

2

あなたはローカル変数に乱数を格納していて、あなたがそれを設定すると思います

int number = random2.nextInt(10); 

少なくとも

this.number = random2.nextInt(10); 

に変更し、それを問題を解決しました。

はまた、あなたはこのゲームを実行しているか

+0

うわー、ありがとう!申し訳ありません、かなりJavaに新しい:P –

+0

ようこそStackoverflowへ。また、[回答を受け入れる方法](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)を参照してください:) –

+0

私は5分待たなければならないと言います。それを受け入れる。 –

関連する問題