我正在使用处理 2.0b7。我有一个 Spool 类,它应该有一个 Note 对象的 ArrayList。在 Spool 的 draw 方法中,我想在 ArrayList 的 draw 方法中调用每个 Note。但是,当我尝试使用此语法执行此操作时,我收到错误“
在 processing.core.PApplet.handleDraw(PApplet.java:2142) 的 spoolloops.draw(spoolloops.java:39) 处的线程“动画线程”java.lang.NullPointerException 中的异常) 在 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 环境中抛出各种错误,但这不是它正在运行的,所以没关系。该平台是处理。
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()
infor
循环似乎是导致问题的原因,但是当我将其更改为 时,i < 1
错误发生在test = (Note)notes.get(i);
. 我想 ArrayList 没有正确填充 Note 对象?