2013-01-11 35 views
0

我正在使用處理2.0b7。我有一個Spool類,它應該有一個Note對象的ArrayList。在Spool的繪製方法中,我想調用ArrayList的繪製方法中的每個Note。然而,當我嘗試做這個語法,我得到的錯誤在spoolloops「異常試圖通過處理中的ArrayList循環

異常在線程‘動畫主題’顯示java.lang.NullPointerException $ Spool.draw(spoolloops.java:119)在 spoolloops.draw(spoolloops.java:39)at processing.core.PApplet.handleDraw(PApplet.java:2142)at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:193) at processing.core.PApplet。運行(PApplet.java:2020) java.lang.Thread.run(Thread.java:662)

請注意這是Processing環境,它運行某種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)); 
    } 
} 

for循環的notes.size()是什麼似乎引起問題,但是當我將其更改爲i < 1,在test = (Note)notes.get(i);出現錯誤。我想ArrayList沒有正確填充註釋對象?

回答

2

類和對象初始化程序不返回類型。從

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