2016-04-26 90 views
-1

我是一個生鏽的程序員,正在研究一個將有多個對象類的應用程序。我唯一的錯誤是類型不匹配,我不確定調試器是作爲一個對象讀取的,哪一個實際上在我創建的coord類中。處理類型不匹配

public class Lily { 
    int state; 

    public Lily(coord[] pond) { 
int state = 0; 
coord place = new coord (mouseX, mouseY); 
pond = append(pond, place); \\this is the line that's getting a type error 

    } 

    public void draw(){ 
    ellipse(mouseX, mouseY, 40, 40); 
    fill(#08BC09); 

} 
} 

而座標類

public class coord { 

    float[] pair = new float[2]; 

    public coord(float X, float Y){ 
    pair[0] = X; 
    pair[1] = Y; 

    } 
} 

編輯:該錯誤消息中讀取 「類型不匹配, 」java.lang.Object中main.coord [] 「」

「 不與匹配」

有什麼幫助嗎?提前致謝。

+0

http://stackoverflow.com/questions/2843366/how-to-add-new-elements-to-an-array – stark

+1

您應該編輯您的問題並添加錯誤消息的文本。 – Lii

+0

您可以請發表我們可以運行的[mcve]嗎?如果我們無法自己運行代碼,則很難幫助調試。 –

回答

1

要了解該問題,請閱讀the referenceappend()函數的文檔。具體來說,這個位:

當使用一個對象數組時,函數返回的數據必須轉換爲對象數組的數據類型。例如:SomeClass[] items = (SomeClass[]) append(originalArray, element)

換句話說,你必須這樣做:

pond = (coord[])append(pond, place); 

這樣做的原因是,append()功能需要一個Object[]數組作爲參數。所以即使你通過一個coord[]數組,它也不會「知道」數組的類型。所以當它返回給你時,你會得到一個Object[]陣列,它恰好是一個coord[]陣列。編譯器不能保證這一點,所以你得到的錯誤,但你可以安全地轉換返回給你的數組。

還有一點要注意:你應該養成使用正確縮進和大寫的習慣(類應該以大寫字母開頭),否則你的代碼有點難以閱讀。

+0

感謝您的幫助!此外,語法註釋也有幫助。我的編程課有點過於遙遠,不能記住那樣的事情。我正在學習數學,所以我理解編程的邏輯,但其他很多東西對我來說都是希臘語。 – LittleGrandma

+0

@LittleGrandma沒問題,我絕對明白! –