簡體   English   中英

為什么我會變空?

[英]Why am I getting null?

因此,我有單獨的類,並且正在學習如何通過方法將它們相互結合。 尋找關於為什么某些方法為什么我為空的解釋,我已經堅持了幾個小時。

主要“ Bagel”類:

  public class Bagels {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    Player first = new Player();
    Engine second = new Engine();

    System.out.println("Welcome!");

    second.getNumDigits();
    first.getName();

    System.out.println("Starting game #" +first.gamesCompleted );
    System.out.println("" );


    first.askForGuess();

    second.setGuessConvert(first);

    second.convertNumtoDigitArray(second.guessConvert);

    second.generateNewSecret();


    System.out.println("" + second.userGuessArray.length); //NULL error when run
    System.out.println("" + second.secretNumber.length); //NULL error when run

    Validator.validateGuess(second.secretNumber, second.userGuessArray, second.numDigits);

引擎類別:

    import java.util.Random;
   import java.util.Scanner;
    public class Engine {

public int numDigits, numDigitsSet;
public int i;
public int[] secretNumber, userGuessArray;
public Random randomNumberGenerator;
public String guessConvert;

Scanner sc = new Scanner(System.in);

public void setNumDigits()
{

    numDigitsSet = numDigits;

}

public void setGuessConvert(Player player)
{
    guessConvert = player.userGuess;
}

public int getNumDigits()
{
    System.out.print("Enter the number of digits to use: ");
    return numDigits = sc.nextInt();

}

public void generateNewSecret() //NULL
{
Random rand = new Random();{
for (int i=0; i<numDigitsSet; i++)
{
    secretNumber[i]= rand.nextInt(10);

        }
    }
}

public int[] getSecretNumber()
{
     for (int j=0; j<secretNumber.length; j++) //NULL
     {
         System.out.println("" + secretNumber[j]);
     }
    return secretNumber;
}

public void convertNumtoDigitArray(String guessConvert) //NULL
{
    String[] userGuessSplit = guessConvert.split(",");
    int[] userGuessArray = new int[userGuessSplit.length];
    for (int j=0; j<userGuessSplit.length; j++)
    {
        userGuessArray[j] = Integer.parseInt(userGuessSplit[j]);
    }
}

}   

在Engine類的generateNewSecret函數中,必須在使用之前初始化secretNumber。

    public void generateNewSecret()
    {
    Random rand = new Random();{
secretNumber =  new int[numDigitsSet];
    for (int i=0; i<numDigitsSet; i++)
    {
        secretNumber[i]= rand.nextInt(10);

            }
        }
    }

在convertNumtoDigitArray函數中,我認為您應該檢查guessConvert,可能其中沒有逗號。

public void convertNumtoDigitArray(String guessConvert)
{
    String[] userGuessSplit = guessConvert.split(",");
    int[] userGuessArray = new int[userGuessSplit.length];
    for (int j=0; j<userGuessSplit.length; j++)
    {
        userGuessArray[j] = Integer.parseInt(userGuessSplit[j]);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM