• ベストアンサー

キャストの仕方?

class Rots{ double thetaX, thetaY, thetaZ; } public class DemoData{ public static Rots[] rots = new Rots[16]; public DemoData(){ } void changeTheta(int i, double dx, double dy){ System.out.println("i, dx in dd= " +i+dx); rots[i].thetaX = dx; <--- rots[i].thetaY = dy; <--- } } というプログラムがあります。他のファイルで DemoData dd = new DemoData(); if(j<=16 && j>=0) dd.changeTheta(j, thetax, thetay); とすると(j, thetax, thetay には具体的な数値が入って います。) <--- の部分でエラーが出てしまいます。 どうしてでしょうか? お分かりの方、教えてください。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • vmlinuz
  • ベストアンサー率30% (4/13)
回答No.1

DemoData.rots[] はちゃんと初期化してますか? これだけだと配列を作っているだけで、配列の中身が初期化されてないように見えます。 for(int i=0; i<17; i++){ rots[i] = new Rots[x,y,z]; } のような操作がどこかでなされているか確認してみてはどうでしょうか。

その他の回答 (1)

  • EXPRESS
  • ベストアンサー率0% (0/1)
回答No.2

配列の中身が生成されていないようです。 コンストラクタで public DemoData(){ for(int i=0; i<rots.length; i++) { rots[i] = new Rots(); } } こんな感じにすると、NullPointerExceptionは、でなくなります。

shootingfish
質問者

お礼

vmlinuzさん、EXPRESSさん どうもありがとうございました。 おかげでエラーが消えました。 初歩的なことがわかってなくて、苦労してます。 本当にありがとうございました。

関連するQ&A