如何打破嵌套循环

Ale*_*ecR 1 java arrays loops

我目前正在制作一个程序,其中需要嵌套循环来搜索数组以找到数组内良好输入的位置.这是一个例子:

public void placePiece(int column) {
        boolean goodInput = false;

        while(!goodInput) {
            for(int x = 5; x >= 0; x--) {
                if(boardStatus[x][column] == 0) {

                    setRow(x);
                    boardStatus[x][column] = 1;
                    goodInput = true;
                    break;

                }else if(boardStatus[0][column] == 1) { 
                    goodInput = false;
                    break;
                }else{

                }

            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

该方法采用一个参数,该参数应该是该片段所在的列(由鼠标监听器接收).如果2D数组中的列已经填充到顶部,程序将陷入"else if"中的无限循环中,并且我不确定如何打破这个循环.如果输入错误,我怎么能突破这个循环,以便用户可以尝试将另一列作为输入.

Cub*_*key 8

一种简单的方法是使用带标签的break语句.

myLabelName:
for(outer loop)
    for(inner loop)
        if(condition)
            break myLabelName;
Run Code Online (Sandbox Code Playgroud)

当您在找到所需内容时不想浪费时间迭代其他对象/项目时,这非常有用.


要扩展,当您使用just break;(没有标签)时,它将退出父循环.例如:

myLabelName:
for(outer loop){
    for(inner loop){
        if(condition){
            break myLabelName; //breaks outer loop
        }
        else if(other condition){
            break; //breaks parent (inner/nested) loop
        }
     }
 }
Run Code Online (Sandbox Code Playgroud)