繁体   English   中英

在Java中使用for循环设置数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM