Java 如何在方法中返回中断或继续是可能的?

Java 如何在方法中返回中断或继续是可能的?,java,break,continue,Java,Break,Continue,当我使用while循环时,我需要使用许多完全相同的if块,所以我计划将它放在一个方法中,并在我想要的地方重用它!但我有一个问题,我想返回继续或中断在我的if块的某些区域,所以我可以返回中断或继续吗 while (true){ move(a); move(b); } public *** move(Parameter parameter){ if (statement){ return continue; } else{ return break; } } 您

当我使用while循环时,我需要使用许多完全相同的if块,所以我计划将它放在一个方法中,并在我想要的地方重用它!但我有一个问题,我想返回继续或中断在我的if块的某些区域,所以我可以返回中断或继续吗

while (true){
move(a);
move(b);
}

public *** move(Parameter parameter){
  if (statement){
    return continue;
  }
  else{
    return break;
  }
} 

您可以返回布尔值:

while (true){
    if(move(a))
    {
        break;
    }
    else
    {
        continue;
    }
    if(move(b))
    {
        break;
    }
    else
    {
        continue;
    }
}

public boolean move(Parameter parameter){
    if (statement){
        return false;
    }
    else{
        return true;
    }
} 

您可以返回布尔值:

while (true){
    if(move(a))
    {
        break;
    }
    else
    {
        continue;
    }
    if(move(b))
    {
        break;
    }
    else
    {
        continue;
    }
}

public boolean move(Parameter parameter){
    if (statement){
        return false;
    }
    else{
        return true;
    }
} 

如果我们真的实现了你想要的东西,那么我将不考虑这个事实
move(b)将无法访问。大概当你说
continue
时,你的意思是执行下一条语句;不返回到循环的开始

但遗憾的是,您无法在Java中实现这一点。在Java中,只能返回值,不能返回“指令”。(在C和C++中,你可以使用宏来实现这一点,虽然这会使调试器混乱)。 但是,如果您调整
move
以返回
boolean
,即
true
,如果您想
中断
false
,则可以在调用站点编写

while (true){
    if(move(a)){
        break;
    } else if (move(b)){
        break;
    }
}
或是以优异成绩获胜

while (true){
    if (move(a) || move(b)){
        break;
    }
}
在这里,我利用了操作符的短路特性
|

最后,如果您想将此代码提交到一个模糊处理竞赛中,那么请使用简单美观但仍然易于理解的

while(!(移动(a)|移动(b))

如果你想保证你在上述比赛中获胜,那么就交换
移动
回合的返回规则,使用完全不雅的规则


while(移动(a)和移动(b))

如果我们真的实现了你想要的,那么我将把这个事实抛在一边
move(b)将无法访问。大概当你说
continue
时,你的意思是执行下一条语句;不返回到循环的开始

但遗憾的是,您无法在Java中实现这一点。在Java中,只能返回值,不能返回“指令”。(在C和C++中,你可以使用宏来实现这一点,虽然这会使调试器混乱)。 但是,如果您调整
move
以返回
boolean
,即
true
,如果您想
中断
false
,则可以在调用站点编写

while (true){
    if(move(a)){
        break;
    } else if (move(b)){
        break;
    }
}
或是以优异成绩获胜

while (true){
    if (move(a) || move(b)){
        break;
    }
}
在这里,我利用了操作符的短路特性
|

最后,如果您想将此代码提交到一个模糊处理竞赛中,那么请使用简单美观但仍然易于理解的

while(!(移动(a)|移动(b))

如果你想保证你在上述比赛中获胜,那么就交换
移动
回合的返回规则,使用完全不雅的规则


while(移动(a)和移动(b))

使用返回的布尔值使其变得超级简单

public boolean move(Parameter parameter){
  return statement;
} 

while (true){
  if(!move(a)) break;
  if(!move(b)) break;
}

使用返回的布尔值使其变得超级简单

public boolean move(Parameter parameter){
  return statement;
} 

while (true){
  if(!move(a)) break;
  if(!move(b)) break;
}


@yper yes有……如果
move(a)
返回
false
他想跳过
move(b)
@yper这可能不是他的全部代码……他可能只是在展示一个示例,所以他可能想跳过
move(b)
之后的代码。@khelwood是的……但这是他的问题。也许他有更多我们看不到的代码。这是一个不同的主题,可能是一个不同的问题…@khelwood这回答了他的问题。现在,如果他还有其他问题,他也可以在这里发布。谢谢!我对这些条件感到不安,但我忘了我们可以使用布尔值进行任意数量的语句@yper yes有……如果
move(a)
返回
false
他想跳过
move(b)
@yper这可能不是他的全部代码……他可能只是在展示一个示例,所以他可能想跳过
move(b)
之后的代码。@khelwood是的……但这是他的问题。也许他有更多我们看不到的代码。这是一个不同的主题,可能是一个不同的问题…@khelwood这回答了他的问题。现在,如果他还有其他问题,他也可以在这里发布。谢谢!我对这些条件感到不安,但我忘了我们可以使用布尔值进行任意数量的语句!那不太一样。看我的答案;-)那不太一样。看我的答案;-)
|
的用法实际上并没有那么愚蠢+听到芭丝谢芭的声音了吗?一点也不愚蠢;)你真的认为这很悲伤吗?有一件事我要指出。他的示例说明了与
return语句等价的东西?中断:继续
,因此无法访问移动(b)(编译错误)。(我明白了吗?)是的,你明白了。我试图在回答的顶部否认这一点。
|
的用法实际上并没有那么愚蠢+听到芭丝谢芭的声音了吗?一点也不愚蠢;)你真的认为这很悲伤吗?有一件事我要指出。他的示例说明了与
return语句等价的东西?中断:继续
,因此无法访问移动(b)(编译错误)。(我明白了吗?)是的,你明白了。我试图在答案的顶部否认这一点。我总是发现这些指令使用了糟糕的设计,因此如果这些指令不直接在循环中,那么如果我没有弄错,move(b)将永远不会执行,因为
contìnue
停止此语句块并重新检查循环值。@AxelH:你是正确的<代码>移动(b)
如果我们逐字解释
continue
将无法访问。我总是发现那些使用了糟糕的设计,因此如果这些指令不直接在循环中,那又是什么消息呢?如果我没有弄错,移动(b)将永远不会执行,因为
contìnue
停止此语句块并重新检查循环值。@AxelH:您是正确的<代码>移动(b)
如果我们逐字解释
继续
将无法访问。