我正在尝试使用内部对象的动态数组。我需要一个与Java中的.push()函数等效的函数,但在Java中。这些错误发生在设置功能内部的pipe.push(new Pipe())
中。
Bird bird;
Pipe[] pipe;
boolean keyDown = false;
void setup() {
size(800, 800);
frameRate(60);
bird = new Bird();
pipe.push(new Pipe());
}
//------------------------------------------------------------
void draw() {
background(0);
bird.gravity();
bird.show();
bird.edge();
}
//-----------------------------------------------------------
void keyPressed(KeyEvent e) {
if(e.getKeyCode() == 32) {
if(keyDown == false) {
bird.jump();
keyDown = true;
}
}
}
void keyReleased() {
keyDown = false;
}
//-----------------------------------------------------------------
答案 0 :(得分:2)
Java数组中的数组是固定大小的。您必须指定大小,然后才能展开它们。不幸的是更改了声明新数组所需的大小。
但是幸运的是Java提供了不同的数据结构,例如列表,该列表可以随着大小的增加而动态增长。
例如
ArrayList<Pipe> pipes = new ArrayList();
pipes.add(new Pipe());
pipes.add(new Pipe());
for(Pipe pipe : pipes){
pipe.update();
}
答案 1 :(得分:1)
这里:
pipe.push(new Pipe());
在Java中根本不可能。在Java中,数组的大小为固定。您不能动态添加/删除插槽。
如果需要,例如,可以使用List/AbstractList。
除此之外,这里的真正答案是:不要从假设Java与JavaScript有任何关系开始。因此,当您想到“让我们在Java中使用数组”时,请先研究Java如何处理数组。不要以为JavaScript中有任何东西。