Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何打破嵌套循环_Java_Arrays_Loops - Fatal编程技术网

Java 如何打破嵌套循环

Java 如何打破嵌套循环,java,arrays,loops,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) {

我目前正在制作一个程序,其中需要嵌套循环来搜索数组,以便在数组中找到合适的输入点。以下是一个例子:

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{

                }

            }
        }
    }
该方法采用一个参数,该参数是工件应该位于的列(由鼠标侦听器接收)。如果2D数组中的列已填充到顶部,程序将陷入“else If”中的无休止循环中,我不确定如何打破此循环。如果存在错误的输入,我如何打破这个循环,以便用户可以尝试提供另一列作为输入。

一个简单的方法是使用

如果您不想在找到所需的对象/项目后浪费时间迭代其他对象/项目,这将非常有用


若要展开,请使用just
break(无标签)它将退出父循环。
例:

一个简单的方法是使用一个

如果您不想在找到所需的对象/项目后浪费时间迭代其他对象/项目,这将非常有用


若要展开,请使用just
break(无标签)它将退出父循环。
例:


在循环后更改参数:

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{

            }

        }
        goodInput = true; // <-----
    }
}
public void placePiece(int列){
布尔输入=假;
而(!goodInput){
对于(int x=5;x>=0;x--){
如果(boardStatus[x][column]==0){
setRow(x);
boardStatus[x][column]=1;
goodInput=true;
打破
}如果(boardStatus[0][column]==1){
goodInput=false;
打破
}否则{
}
}

goodInput=true;//在循环后更改参数:

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{

            }

        }
        goodInput = true; // <-----
    }
}
public void placePiece(int列){
布尔输入=假;
而(!goodInput){
对于(int x=5;x>=0;x--){
如果(boardStatus[x][column]==0){
setRow(x);
boardStatus[x][column]=1;
goodInput=true;
打破
}如果(boardStatus[0][column]==1){
goodInput=false;
打破
}否则{
}
}

goodInput=true;//当您在
elseif
循环中时,您将再次分配
goodInput=false;
以便
while
条件再次变为true,循环将永远连续


如果您想在收到正确的输入之前进行输入,可以使用
do(){}while()
loop

当您处于
elseif
循环时,您将再次分配
goodInput=false;
以便
while
条件再次变为true,并且循环永远连续


如果您希望在收到正确的输入之前进行输入,可以根据您提供的描述使用
do(){}while()
loop

,我不确定else if语句的用途。据我所知,您正在检查某一列中的所有行,以查看该单元格是否已设置

while循环和for循环的组合似乎也值得怀疑。在这种情况下,似乎不需要while循环

如果整个列都已填充,会发生什么情况?此方法是否应返回状态标志

这不能用一个for循环实现吗

for (int x = 5; x >= 0; --x)
{
    if(boardStatus[x][column] == 0) {
        setRow(x);
        boardStatus[x][column] = 1;
        break;
    }
}

如果需要,可以跟踪标志变量以指示是否找到过空单元格。

根据您提供的描述,我不确定else If语句的用途。据我所知,您正在检查某列中的所有行,以查看该单元格是否已设置

while循环和for循环的组合似乎也值得怀疑。在这种情况下,似乎不需要while循环

如果整个列都已填充,会发生什么情况?此方法是否应返回状态标志

这不能用一个for循环实现吗

for (int x = 5; x >= 0; --x)
{
    if(boardStatus[x][column] == 0) {
        setRow(x);
        boardStatus[x][column] = 1;
        break;
    }
}

如果需要,可以跟踪标志变量,以指示是否找到过空单元格。

可以使用标志或goto语句

标志说明

code

bool  flag = true;
for (int i = 0; (i < 10) && (flag==true); i++)
{
   for(int j = 0; (j < 10) && (flag==true); j++)
   {
      if (condition)
         flag = false;
   }  
}
code
布尔标志=真;
对于(int i=0;(i<10)和&(flag==true);i++)
{
对于(int j=0;(j<10)和&(flag==true);j++)
{
如果(条件)
flag=false;
}  
}

您可以使用flag或goto语句

标志说明

code

bool  flag = true;
for (int i = 0; (i < 10) && (flag==true); i++)
{
   for(int j = 0; (j < 10) && (flag==true); j++)
   {
      if (condition)
         flag = false;
   }  
}
code
布尔标志=真;
对于(int i=0;(i<10)和&(flag==true);i++)
{
对于(int j=0;(j<10)和&(flag==true);j++)
{
如果(条件)
flag=false;
}  
}

使用try/catch将help@ryekayo由于没有引起错误,我将捕获什么?您将需要创建自己的异常,并捕获被认为是错误输入的内容可能与使用try/catch的重复help@ryekayo既然没有引起错误,我将捕获什么?您将需要cr你自己的例外,并捕捉它是什么,你认为是坏的输入可能复制的这看起来像一个C++答案,你能格式化它,使它匹配java语法?这看起来像C++答案,你能格式化它,使之与java语法相匹配吗?