2016-12-05 115 views
-1

在我的代碼中,我有變量randomNumber,它應該改變,但它從來沒有。爲什麼?爲什麼我的變量值永遠不會改變?

import java.util.Random; 
import java.util.Scanner; 

public class NimGame 
{ 

    public static void main(String[] args) 
    { 
     Random myRandom = new Random(); 

     int playerCount = 1; 
     int stonesRemoved = 0; 
     int randomNumber; 

     randomNumber = myRandom.nextInt(15) + 16; // Selects a random number between 15-30 as the number of stones. 

     System.out.println("You will be playing with: " + randomNumber + " stones."); 

     System.out.println("Each player can take 1, 2 or 3 stones when it is your turn."); 
     System.out.println("Player who takes the last stone looses."); 
     System.out.println(); 

     Scanner input = new Scanner(System.in); 

     while (true) 
     { 
      StoneRemover (randomNumber, playerCount); 
      randomNumber = randomNumber - stonesRemoved; 

      System.out.println("There are now: " + randomNumber + " stones"); 

      if (randomNumber == 0) 
      { 
      if (playerCount == 1) 
      { 
       System.out.println("Player 1 lost!"); 
      } 

      else 
      { 
       System.out.println("Player 2 lost!"); 
      } 
      break; 
      } 
      playerCount ++; 

      if (playerCount > 2) 
      { 
      playerCount = 1; 
      } 
     } 
     input.close(); 
    } 

    public static int StoneRemover (int stonesRemoved, int playerCount) 
    { 
     Scanner input = new Scanner(System.in); 
     while (true) 
     {  
      System.out.print("How many stones does player " + playerCount + " want to take? "); 
      stonesRemoved = input.nextInt(); 
     if (stonesRemoved > 3 || stonesRemoved == 0) 
      { 
      System.out.println("You did not select a correct number of stones to remove."); 
      System.out.println("Try Again!!"); 
      } 

     else 
      { 
      break; 
      } 
     } 
     return stonesRemoved; 
    } 
} 

     //Every time I run the code, the randomNumber does not update to the new number after the user retrieves 1,2, or 3 stones. Why is this happening 
+0

真正的問題根本與隨機數無關。您只能使用一次隨機數生成器,而不能再次使用。真正的問題是:「爲什麼我的變量永遠不會改變」。 –

回答

0

你不使用返回值從stonesRemoved功能:

stonesRemoved = StoneRemover(randomNumber, playerCount); 

或者你可以這樣做:

randomNumber -= StoneRemover(randomNumber, playerCount); 
0

,因爲你沒有更改程序不能正常工作變量stonesRemoved。它始終保持爲0!

「但是不!我在StoneRemover方法中改變了它!不是嗎?」你可能會問。

你做那麼什麼位置:

stonesRemoved = input.nextInt(); 

改變你的主要方法,即使用stoneRemoved變量:

randomNumber = randomNumber - stonesRemoved; // <-- not this one! 

這是因爲你通過了而不是stonesRemoved該方法的參考,所以在StoneRemover方法內更改它對stonesRemoved var無效主要方法可行。你可以做的是這樣的:

改變這一行:

StoneRemover (randomNumber, playerCount); 

這樣:

stonesRemoved = StoneRemover (randomNumber, playerCount); 

,它應該工作!

相關問題