В моем коде я хочу отслеживать порядок нажатия кнопок с помощью массива (порядок - это имя массива), а затем каждый раз, когда нажата кнопка, эта кнопка будет записана внутри массив. Это будет сделано с помощью булевых кнопок для определенных кнопок, если нажата кнопка, логическое значение true и оттуда, если логическое значение true, оно установит следующее открытое пятно в массиве заказов к этому ключу. Вот как это делается до сих пор:Установка массива с циклом в Java
private boolean bird = false;
private boolean ox = false;
private boolean dog = false;
String[] order = new String[10];
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
for(int i=0; i < handler.object.size(); i++){
GameObject tempObject = handler.object.get(i);
if(tempObject.getId() == ID.Player){
if(key == KeyEvent.VK_T) bird = true;
if(key == KeyEvent.VK_U) ox = true;
if(key == KeyEvent.VK_G) dog = true;
}
}
public void order(){
if(bird){
for(int x=0; x < 10; x++){
if(order[x] == null) order[x] = "bird";
bird = false;
}
}
if(ox){
for(int x=0; x < 10; x++){
if(order[x] == null) order[x] = "ox";
ox = false;
}
}
if(dog){
for(int x=0; x < 10; x++){
if(order[x] == null) order[x] = "dog";
dog = false;
}
}
}
Пожалуйста, обратите внимание, что животные здесь представляют собой ключи
проблема здесь заключается в том, что, когда я проверить, что каждый индекс массива устанавливается в он дает мне только один из ключей. пример; i нажмите t, и все ордера (0,1,2) - птицы. Я знаю, что это потому, что код проходит через все заказы, чтобы увидеть, являются ли они нулями, которые в начале они есть, а затем устанавливает эти нулевые порядки в слово. После этого ни один из ордеров не равен нулю.
То, что я спрашиваю, как это сделать, чтобы цикл цикла останавливался после того, как он устанавливает один из индексов в слово? я попробовал «перерыв», но это не сработало, я тоже безнадежно смотрел в Интернете. Спасибо вам за помощь!
проблема с использованием разрыва; заключается в том, что он только позволяет установить первый порядок, используя ключ после этого не имеет значения. EDIT: хорошо, поэтому я играл с ним и ставил перерыв птицу и быка, но не собаку, и когда я это делаю, если я нажимаю птицу, первая - птица, если я нажимаю ox, ничего не происходит, и когда я нажимаю собаку второй и третий заказ стать собака. Я не знаю, почему это происходит, но мы думаем об этом. – GMagician
Операторы 'break ;' должны быть заключены в квадратные скобки, если операторы, в которых вы меняете значение @GMagician, сейчас я не могу сказать, что это то, что вы сделали, но это поведение звучит странно. –
'код', если (птица) { \t \t \t для (INT х = 0, х <10; х ++) { \t \t \t \t если (порядок [х] == NULL) порядок [х] = "птица" ; \t \t \t \t break; \t \t \t \t \t \t bird = false; \t \t} 'code' Я помещаю разрыв в {} после оператора if, и я думал, что это было странное поведение. EDIT: Спасибо, что так работает! – GMagician