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代码>(无标签)它将退出父循环。
例:
一个简单的方法是使用一个
如果您不想在找到所需的对象/项目后浪费时间迭代其他对象/项目,这将非常有用
若要展开,请使用justbreak代码>(无标签)它将退出父循环。
例:
在循环后更改参数:
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语法相匹配吗?