2016-04-26 92 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没问题,我绝对明白! –