2016-04-24 7 views
0

私のJavaプロジェクトに問題があります。配列から要素を削除する必要がありますが、それは面倒ですが、問題はそれが要素を削除しても私はボタンをクリックしたとき)のデバッグにチェックし、私の知る限りでは、それは基本的に私はdoesn'tでも問題要素を削除しているという事実ので、配列を書き換えます。任意の提案は?Java配列が書き換えられています:(

public class Words { 

    Random r = new Random(); 
    public String[] poleSlov = {"a","b","c","d","e","f","g","h","i"}; 

    public String chooseRandomWord() { 
     int tmp = r.nextInt(poleSlov.length); 
     String p = poleSlov[tmp]; 

     String[] result = new String[poleSlov.length - 1]; 
     for (int i = 0; i < result.length; i++) { 
      result[i] = poleSlov[((i < tmp) ? i : i + 1)]; 
     } 

     poleSlov = result.clone(); 

     return p; 
    } 
} 

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

    Words s = new Words(); 
    labSlovo.setText(s.chooseRandomWord()); 

}            

答えて

1

btnNoveSlovoActionPerformed()が作成されますnew Wordsインスタンス。新しいpoleSlov配列を持つ。sはローカル変数であるため、btnNoveSlovoActionPerformed()が返された後、参照するオブジェクトにアクセスできなくなる。

一つの可能​​な修正は現在のインスタンスにchooseRandomWord()を呼び出すことです:

private void btnNoveSlovoActionPerformed(java.awt.event.ActionEvent evt)  
{            
    labSlovo.setText(chooseRandomWord()); 
} 
+0

それは私が知っているものですが、それを修正する方法は? :D –

+0

@ZdeněkDavid編集を参照してください – Eran

+0

ありがとう、多くを助けた –

0

実際の文字列poleSlovは常に同じであるため、これが発生します。 Wordsの新しいインスタンスが作成されると、poleSlovは同じ内容で再宣言されます。私はあなたがこのStringの内容をどのように編集できるかについて考えることをお勧めします。

関連する問題