#java
#java
Вопрос:
Я пытаюсь создать динамический массив с объектами внутри. Мне нужна функция, эквивалентная функции .push() в Javascript, но на Java. Ошибки возникают в pipe.push(new Pipe())
внутри функции setup.
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;
}
//-----------------------------------------------------------------
Комментарии:
1. Не могли бы вы поделиться текущим кодом Java, который у вас есть?
2. Для массивов или списков? Для массивов вы не можете; они имеют статический размер. Для списков используйте
add
.3. Теперь, когда вы опубликовали свой код, вы не можете
push
использовать массив в java. Возможно, вам лучше подойдетList
. Кроме того, ваш массив даже не инициализирован, поэтому, даже если бы у массивов был такой метод, это все равно не сработало бы.4. ‘Ошибки’. Какие ошибки?
Ответ №1:
Массивы в Java arrays имеют фиксированный размер. вы должны указать размер, а затем не можете их развернуть. К сожалению, для изменения размера вам нужно объявить новый массив.
Но, к счастью, Java предоставляет разные структуры данных, например, list, set, которые могут динамически увеличиваться по мере увеличения размера.
например
ArrayList<Pipe> pipes = new ArrayList();
pipes.add(new Pipe());
pipes.add(new Pipe());
for(Pipe pipe : pipes){
pipe.update();
}
Комментарии:
1. Если вы собираетесь использовать Arraylist, вы можете использовать что-то вроде этого —
Ответ №2:
Здесь:
pipe.push(new Pipe());
просто невозможно в Java. В Java массив имеет фиксированный размер. Вы не можете динамически добавлять / удалять слоты.
Если вам это нужно, вы можете использовать, например, List / AbstractList.
Помимо этого, реальный ответ здесь таков: не начинайте с предположения, что Java имеет какое-либо отношение к JavaScript. Итак, когда вы думаете «давайте использовать массивы в Java», начните с изучения того, как Java обрабатывает массивы. Не думайте, что там есть что-то похожее на JavaScript.