2016-12-05 199 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); 

,它应该工作!

相关问题