试图在处理中循环遍历ArrayList的异常

时间:2013-01-11 04:27:37

标签: loops processing

我正在使用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?

1 个答案:

答案 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) );