- ベストアンサー
キャストの仕方?
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 には具体的な数値が入って います。) <--- の部分でエラーが出てしまいます。 どうしてでしょうか? お分かりの方、教えてください。 お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
DemoData.rots[] はちゃんと初期化してますか? これだけだと配列を作っているだけで、配列の中身が初期化されてないように見えます。 for(int i=0; i<17; i++){ rots[i] = new Rots[x,y,z]; } のような操作がどこかでなされているか確認してみてはどうでしょうか。
その他の回答 (1)
- EXPRESS
- ベストアンサー率0% (0/1)
配列の中身が生成されていないようです。 コンストラクタで public DemoData(){ for(int i=0; i<rots.length; i++) { rots[i] = new Rots(); } } こんな感じにすると、NullPointerExceptionは、でなくなります。
お礼
vmlinuzさん、EXPRESSさん どうもありがとうございました。 おかげでエラーが消えました。 初歩的なことがわかってなくて、苦労してます。 本当にありがとうございました。