如何在方法中返回中断或继续是不是可能?
Posted
技术标签:
【中文标题】如何在方法中返回中断或继续是不是可能?【英文标题】:How to return a break or Continue in a method is it possible?如何在方法中返回中断或继续是否可能? 【发布时间】:2016-11-04 13:32:45 【问题描述】:当我使用 while 循环时,我需要使用许多完全相同的 if 块所以我打算把它放在一个方法中并在我想要的地方重用它!但是我遇到了一个问题,我想在我的 if 块的某些区域返回 Continue 或 break,所以我可以返回 Break 或 continue 吗?
while (true)
move(a);
move(b);
public *** move(Parameter parameter)
if (statement)
return continue;
else
return break;
【问题讨论】:
我总是发现那些使用糟糕的设计,所以如果这些指令没有直接在循环中,那真是一团糟 另外,如果我没记错的话,move(b) 将永远不会被执行,因为contìnue
停止这个语句块并重新检查循环值。
@AxelH:你是对的;如果我们按字面解释continue
,move(b)
将无法访问。
【参考方案1】:
你可以返回一个布尔值:
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;
【讨论】:
@yper 是的...如果move(a)
返回false
他想跳过move(b)
。
@yper 这可能不是他的全部代码......他可能只是在展示一个示例,所以他可能在move(b)
之后有他想跳过的代码。
@khelwood 是的,这是真的……但那是他的问题。也许他有更多我们看不到的代码。这是一个不同的主题,也许是一个不同的问题......
@khelwood 这回答了他的问题。现在,如果他还有其他问题,他也可以在这里发布。
谢谢!我对条件感到不安,但我忘记了我们可以使用布尔值进行任意数量的语句!【参考方案2】:
我将搁置这样一个事实,如果我们实现了您真正想要的,那么move(b);
将无法访问。大概当您说continue
时,您的意思是执行下一条语句;不回到循环的开头?
但遗憾的是,您无法在 Java 中实现这一点。在 Java 中,您只能返回一个 值,而不是“指令”。 (在 C 和 C++ 中,您可以使用宏来实现这一点,尽管这会弄乱您的调试器。)
但是,如果您调整 move
以返回 boolean
即 true
如果您想要 break
和 false
否则,那么您可以在调用站点编写
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
回合的返回规则并使用完全不雅
while (move(a) && move(b))
;
【讨论】:
||
的用法其实没那么傻。 +1
听到芭丝谢巴了吗?根本不是愚蠢的举动;)
你真的觉得这很可悲吗?
我要指出一件事。他的示例声明了与return statement ? break : continue
等效的内容,因此 move(b) 将无法访问(编译错误)。 (我清楚了吗?)
是的,你是。我试图在答案的顶部否认这一点。【参考方案3】:
使用返回的布尔值使其变得超级简单
public boolean move(Parameter parameter)
return statement;
while (true)
if(!move(a)) break;
if(!move(b)) break;
【讨论】:
那是不一样的。看我的回答;-)以上是关于如何在方法中返回中断或继续是不是可能?的主要内容,如果未能解决你的问题,请参考以下文章
如果被短信、推送通知或电池电量不足等 uialert 中断,如何自动继续录制