2012-02-23 13 views
0

Container.addでNullPointerExceptionが発生するので、表示されていないものが明らかに欠落しています。 ArrayListは、JButtonを拡張するCellです。 init()メソッドは拡張JPanelクラスにあります。これは私のフリストの質問ですので、私が間違っている場合、質問形式で厳しい、ありがとう。Java:JButtonとArrayList:ArrayListからJPanelに追加

public void init() { 
    int k = cells.length/2; 
    for (int i = 0; i < (cells.length/2); i++) { 
     int ID = rand.nextInt(25); 
     cells[i] = new Cell(this, ID); 
     cells[i + k] = new Cell(this, ID); 
     k--; 
     cellList.add(cells[i]); 
     cellList.add(cells[i + k]); 
    } 

    Collections.shuffle(cellList); 

    for (Cell cell : cellList) { 
     add(cell); 
    } 
} 
+1

また、私が気づいたことは、人々は最近、デバッガを使用していないように見えることです。これは明白なエラーで、長時間のスクリーンの前で簡単に見過ごすことができますが、コードをデバッグすると間違いが瞬時に明らかになりました。だから、デバッガとその使い方を学んでください。 – stryba

+0

あなたはそうです。私はプログラミングに慣れず、デバッガを頻繁に見落としています。私はNetBeansに慣れ親しんでおり、現在はデバッガです。 – Martin8768

答えて

3

プレーンでシンプルなk--

cellList.add(cells[i+k])前に、私はあなたがとにかく配列で何をしているかを見ていないしていないにもかかわらず。

1

cells.length(3、5、7、15のように、2によってdivisionableない)が奇数である場合

が考えるもの次にcells.length=5k=2細胞[4]ヌル残ること。

+1

有効な点ですが、彼は 'cell [4]'を 'cellList'に追加しないので問題にはなりません – stryba

0

cell [i + k]をcellListに追加する前にkを非推奨にしています。その結果、セル[i + k]はまだ初期化されていません。

cellList.add(cells[i]); 
    cellList.add(cells[i + k]); 
    k--; 
+0

OPが投稿したコードとの違いはどこですか? – stryba

+0

おっと、私が仕事を辞め、コピーして貼り付けた後に元のコードを修正するのを忘れてしまう前に、すばやい答えを叩き出しようとしていました。申し訳ありませんが、回答は編集されました。 –

関連する問題