Processing 2.0b7 を使用しています。Note オブジェクトの ArrayList を持つことになっている Spool クラスがあります。Spool の draw メソッドでは、ArrayList の draw メソッドで各 Note を呼び出したいと考えています。ただし、この構文でそれを実行しようとすると、エラーが発生します」
スレッド「アニメーション スレッド」での例外 java.lang.NullPointerException at spoolloops$Spool.draw(spoolloops.java:119) at spoolloops.draw(spoolloops.java:39) at processing.core.PApplet.handleDraw(PApplet.java:2142) ) で processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:193) で processing.core.PApplet.run(PApplet.java:2020) で java.lang.Thread.run(Thread.java:662) で
注意してください これはある種の Java を実行する処理環境ですが、重要な点で異なります。クラス内のメソッドのスコープや戻り値の型を宣言する必要がないため、構文が大きく異なることはわかっています。しかし、私は Java の輸出者ではないので、違いの正確な方法と理由はわかりません。
答えを出したい場合は、Java だけでなく処理でも動作することを確認してください。純粋な Java 環境では、このコードがあらゆる種類のエラーをスローすることは間違いありませんが、このコードが実行されている環境はそうではないため、問題にはなりません。プラットフォームはProcessingです。
class Spool {
int diameter = 50;
int i, angle;
Note note, test;
ArrayList<Note> notes;
void Spool() {
notes = new ArrayList<Note>();
notes.add( note = new Note(100.0,100.0,100.0,100.0,100.0) );
notes.add( note = new Note(120.0,120.0,120.0,120.0,120.0) );
}
void draw() {
for (int i = 0; i < notes.size(); i++) {
test = (Note)notes.get(i);
test.draw();
}
angle = angle + 1;
if ( angle > 360 ) {
angle = 0;
}
}
}
class Note {
float diameter, x,y, start, stop;
Note(float Diameter, float X, float Y, float Start, float Stop) {
diameter = Diameter;
x = X;
y = Y;
start = Start;
stop = Stop;
}
void turn(float degrees) {
}
void draw() {
strokeWeight(25);
arc( x,y,diameter, diameter, radians(start), radians(stop));
}
}
notes.size()
ループ内が問題のfor
原因のようですが、 に変更するとi < 1
でエラーが発生しtest = (Note)notes.get(i);
ます。ArrayList が正しく Note オブジェクトで満たされていないと思いますか?