2016-08-31 5 views
0

私のコードでは、変数 "targetNumber"に別のメソッドでアクセスすることはできません。私はそれを可能にするには? メソッド "jButton3Action ..."では、変数を設定します。そして、この方法では、「jButton1Action ...」私はそれを呼び出そうが、それがエラーを返すです:代わりに変数のプライベートフィールドにし、周りのスコープと混乱する代わりに別の方法で変数セットを使用するにはどうすればよいですか?

Cannot find symbol Symbol: variable targetNumber location: class ggui

public static int randInt(int min, int max){ 
    Random rand = new Random(); 

    int targetNumber = rand.nextInt((max - min) + 1) + min; 

    return targetNumber; 
} 
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
    final int targetNumber = randInt(1, 10000); 
} 
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 

    String tooHigh = "Too High!"; 
    String tooLow = "Too Low!"; 
    String gotIt = "Got it!"; 
    int guess; 
    guess = Integer.parseInt(jTextField1.getText()); 

    if (!(guess == targetNumber)){ 
     guess = Integer.parseInt(jTextField1.getText()); 
     if(guess > targetNumber){ 
      resultField.setText(String.valueOf(tooHigh)); 
     } 
     else if(guess < targetNumber){ 
      resultField.setText(String.valueOf(tooLow)); 
     } 

    } 
    else{ 
     resultField.setText(String.valueOf(gotIt)); 
    } 
+0

代わりにフィールドにしてください。 –

+0

それはまだそれをランダムな整数ジェネレータにしますか? – vicbab

+0

はい、どうでしょうか?変数が存在する範囲を変更するだけで、さまざまな方法で使用できます。 –

答えて

3

をすべてのメソッドがそれにアクセスできます。これはすべてのメソッドにとって便利であり、不要なコードを削除します。このようにそれを使用します。private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

private int targetNumber; 

これを行う:予想通り

targetNumber = randInt(1, 10000); 

をあなたのプログラムの残りの部分では、コードが実行する必要があります。 また、randint()targetNumberの変数をコールしないでください。なぜなら、コンパイラは、return文で参照しているものが混乱している可能性があるからです。

+1

'private final int targetNumber;'フィールドをfinalにすると、初期化されていなければコンパイルエラーが発生し、最終フィールドは(ActionListener'の場合と同様に)再割り当てできません。 – copeg

+6

回答が編集されます。何かの理由で私が逃げた –

+0

すべてがうまくいった、ありがとう! – vicbab

関連する問題