-1

Java入門の最後のプロジェクトでは、MastermindPegGameを実行することにしました。

これは送信ボタンのコードです:

private void submitButtonActionPerformed(java.awt.event.ActionEvent evt) {

    Integer guess1, guess2, guess3, guess4;
    Integer rightnumber = 0, rightposition = 0;

    guess1 = Integer.parseInt (firstInput.getText());
    guess2 = Integer.parseInt (secondInput.getText());
    guess3 = Integer.parseInt (thirdInput.getText());
    guess4 = Integer.parseInt (fourthInput.getText());

    //Values are compared to the actual guess. 
    //(THIS IS WHERE I GET THE FOLLOWING ERROR: 
    //"cannot find symbol, symbol : variable answerdigit, 
    //location: class finalproject.Singleplayer"

    if ( guess1 == answerdigit[0]);
    {
        rightposition = rightposition + 1;
    }
}

これはスタートボタンです。ここでは、4桁の回答/コードが生成されます。

private void startButtonActionPerformed(java.awt.event.ActionEvent evt)
{                                            
    // Declare variables for 4 digit answer, guess for each number
    Integer one, two, three, four;

    //Generate random number between 1 and 6 for each digit in the answer
    int[] answerdigit = new int[4];

    for(int i=0;i<4;i++)
    {
        answerdigit[i]=(int)(Math.random()*6+1);
    }
}              

エラーが発生します:

cannot find symbol, symbol : variable answerdigit, location: class finalproject.Singleplayer

エラーの意味がわかりません。

4

3 に答える 3

2

answerdigitどこかで宣言しているためアクセスできません。また、クラスで宣言する必要がある他の場所にアクセスするために、そのローカルスコープにのみアクセスできます。

例えば

class cls
{
 int[] answerdigit;
//your remaining code
}

あなたはそれを宣言しました

private void startButtonActionPerformed(java.awt.event.ActionEvent evt)

でアクセスします

private void submitButtonActionPerformed(java.awt.event.ActionEvent evt)

それがエラーを出している理由です。

于 2013-01-19T05:04:12.977 に答える
1

可変スコープの問題があるようです。answerdigitはstartButtonActionPerformedメソッドに対してローカルで宣言されているため、このメソッド内でのみ表示され、他の場所には存在しません。この変数をクラスの他の場所で使用する場合は、配列変数answerdigitをクラスで宣言する必要があります。

于 2013-01-19T04:59:25.187 に答える
0

int[] answerdigit = new int[4];private void startButtonActionPerformed(java.awt.event.ActionEvent evt)このメソッドのスコープではなく、クラスのスコープに含まれている必要があります。

このステートメントをメソッドから外すだけint[] answerdigit = new int[4];で、コードは正常になります... :)

于 2013-01-19T05:05:57.327 に答える