[英]Setting array with for loop in Java
在我的代码中,我想跟踪通过使用数组按下的按钮的顺序(顺序是数组名称),然后每次按下按钮时,该按钮将记录在数组内。 这将通过为某些按钮设置布尔值来实现,如果按下某个按钮,则布尔值为true;如果布尔值为true,则从此处开始,它将在order数组中将下一个开放点设置为该键。 到目前为止的操作如下:
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;
}
}
}
请注意,这里的动物代表钥匙
这里的问题是,当我检查一下将数组的每个索引设置为什么时,它只会给我一个键。 例; 我按t,所有订单(0,1,2)都是鸟。 我知道这是因为代码会遍历所有命令以查看它们是否为空(在开始时为空),然后将这些空命令设置为单词。 之后,所有订单都不为空。
我要问的是如何使它在将索引之一设置为单词后停止for循环? 我尝试了“ break”,但没有成功,我在互联网上也望而却步。 感谢您的帮助!
break
是退出for循环的方法。 您是否考虑过在if语句中添加方括号? 顺便说一句,您可以将animal=false;
移动animal=false;
每个for循环中的行数:
if(dog){
for(int x=0; x < 10; x++){
if(order[x] == null) {
order[x] = "dog";
break;
}
}
dog = false;
}
但是,这里是没有所有for循环的更干净的方式来做您想要的事情:
int index = 0;
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) order[index++] = "bird";
if(key == KeyEvent.VK_U) order[index++] = "ox";
if(key == KeyEvent.VK_G) order[index++] = "dog";
}
}
}
甚至更好,还有一个列表,因此您不仅限于10个输入:
List<String> order = new ArrayList<String>();
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
for(GameObject tempObject : handler.object){
if(tempObject.getId() == ID.Player){
if(key == KeyEvent.VK_T) order.add("bird");
if(key == KeyEvent.VK_U) order.add("ox");
if(key == KeyEvent.VK_G) order.add("dog");
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.