2012-03-26 13 views
0

初心者のプログラミングコース用の簡単なアバカスを作成しようとしていますが、周りに頭を下げる。私はGoogleの周りを狩りましたが、これまでのところ成功はありません。プログラムはTextpadで絶対にコンパイルされ、最初はグリッドを表示し、マウスがどの列であるかを理解することができます。しかし、addCounterメソッドを実行するために左クリックすると「スレッド内の例外」AWTが発生します-EventQueue-0 "java.lang.NullPointerException"エラー。私の人生がうまくいかために、私は私がここで間違ってやっていることはできませんどのような早期Abacusプログラムエラー:スレッド「AWT-EventQueue-0」の例外java.lang.NullPointerException

myAbacus.addCounter(thisCol); 

ので、任意のヘルプは本当にいただければ幸い:それはあるAbacusPanel.javaの50行目に私に指示します。私はペーストビンのリンクが大丈夫だと思います。

AbacusPanel.java

AbacusModel.java

+0

あなたは 'AbacusFrame'のコードを投稿しませんでしたが、NullPointerはおそらく' myAbacus'がnullから来る可能性が高いです。 – TPete

答えて

0

AbacusModelをコンストラクタ内のメンバ変数に割り当てないでください。

public AbacusPanel(int nc, int nr) 
    { 
      numCols = nc; 
      numRows = nr; 
      addMouseListener(this); 
      this.myAbacus = new AbacusModel(numCols,numRows); 
    } 
+0

それを修正しました!どうも私はそれを見ていないか分かりません。 – PeterT

0

私はJDKのないUNIXコンピュータでだと私はこれを実行することはできませんが、私はそれが変数thisColのように見えると言うでしょう null値が与えられています。

がにgetColを変更してみてください。また

int getCol(int x) 
    { 
      int r = x*numCols/getWidth(); 
      System.out.println(r); // is this what you expected? 
      return r; 
    } 

、addCounter方法は、ブール値を返していますが、それは真か偽を返すならテストしていないようです。これは、なぜあなたは、それが成功していないので、あなたはnullPointerを取得している可能性がありますカウンタには、

+0

私はそれを行ったが、残念ながら私は同じ結果を得た。私は列と行の値を取得することができるようだが、AbacusModel.javaで設定されたメソッドを呼び出そうとすると問題が発生します。しかし、助けてくれてありがとう! – PeterT

+0

欄と行の値は、あなたが何をしたものかと推測していますか? –

+0

addCounterメソッドへの参照をすべて削除すると、列と行の値は予期したとおりになります。 – PeterT