如何 return 可以在方法中中断或继续?

How to return a break or Continue in a method is it possible?

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

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

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

您可以 return 一个布尔值:

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 时,您的意思是执行下一条语句;不是 return 到循环的开始?

但很遗憾,您无法在 Java 中实现这一目标。在 Java 中,您只能 return 一个 ,而不是 "instruction"。 (在 C 和 C++ 中,您 可以 使用宏来设计它,尽管这会弄乱您的调试器。)

但是,如果您将 move 改编为 return 一个 boolean,也就是说 true 如果您想 breakfalse否则,那么在呼叫站点你可以写

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

或与

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

我正在利用运算符 ||.

短路 特性

最后,如果您想将此代码提交给混淆竞赛,请使用简单美观但仍然易于理解的代码

while (!(move(a) || move(b)));

如果你想保证你赢得比赛,那么交换 move 回合的 return 规则并使用完全不雅的

while (move(a) && move(b));

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

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

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