我正在使用Processing 2.0b7。我有一个Spool类,它应该有一个Note对象的ArrayList。在Spool的draw方法中,我想在ArrayList的draw方法中调用每个Note。但是,当我尝试使用此语法时,我收到错误“
线程“动画线程”中的异常java.lang.NullPointerException 在spoolloops $ Spool.draw(spoolloops.java:119)at spoolloops.draw(spoolloops.java:39)at processing.core.PApplet.handleDraw(PApplet.java:2142)at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:193) 在processing.core.PApplet.run(PApplet.java:2020)at 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()
循环中的for
似乎会导致问题,但当我将其更改为i < 1
时,错误发生在test = (Note)notes.get(i);
。我想ArrayList没有正确填充Note Objects?
答案 0 :(得分:2)
类和对象初始值设定项不返回类型。从
中删除“void”void Spool()
将其保留为
Spool()
否则在创建过程中不会调用它。
此外,
并非完全必要notes.add( note = new Note(100.0,100.0,100.0,100.0,100.0) );
据我所知,它可以简单地说:
notes.add(new Note(100.0,100.0,100.0,100.0,100.0) );