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 には具体的な数値が入って
います。) <--- の部分でエラーが出てしまいます。
どうしてでしょうか? お分かりの方、教えてください。
お願いします。

A 回答 (2件)

配列の中身が生成されていないようです。


コンストラクタで

public DemoData(){
for(int i=0; i<rots.length; i++) {
rots[i] = new Rots();
}
}

こんな感じにすると、NullPointerExceptionは、でなくなります。
    • good
    • 0
この回答へのお礼

vmlinuzさん、EXPRESSさん
どうもありがとうございました。
おかげでエラーが消えました。

初歩的なことがわかってなくて、苦労してます。
本当にありがとうございました。

お礼日時:2000/12/30 16:15

DemoData.rots[] はちゃんと初期化してますか?


これだけだと配列を作っているだけで、配列の中身が初期化されてないように見えます。

for(int i=0; i<17; i++){ rots[i] = new Rots[x,y,z]; }

のような操作がどこかでなされているか確認してみてはどうでしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


人気Q&Aランキング

おすすめ情報