破嵌套循环和主回路
问题描述:
我有以下代码:破嵌套循环和主回路
int x = 100; //Or some other value
while(x > 0) {
for(int i = 5; i > 0; i++) {
x = x-2;
if(x == 0)
break;
}
}
然而,这只会打破for循环。我如何拥有它,以便它打破for和while循环?
干杯!
答
您可以使用标记符,其执行到后的标签上标注的块重定向:
OUTER:
while(x > 0) {
for(int i = 5; i > 0; i++) {
x = x-2;
if(x == 0)
break OUTER;
}
}
虽然在特定情况下,简单break
会工作,因为如果x == 0
的同时会也退出。
答
看到这个example
Outer:
for(int intOuter=0; intOuter < intArray.length ; intOuter++)
{
Inner:
for(int intInner=0; intInner < intArray[intOuter].length; intInner++)
{
if(intArray[intOuter][intInner] == 30)
{
blnFound = true;
break Outer;
}
}
}
答
bool done=false;
while(!done && x > 0) {
for(int i = 5;!done && i > 0 ; i++) {
x = x-2;
if(x == 0){
done=true;
break ;
}
}
}
答
尽量避免休息,总是有一种其他的方式来写你的循环,所以你不需要它这是更“漂亮”,更容易理解,如果有人否则必须修改你的代码。在您的例子中,while循环是不必要的,但向你展示它是如何可能的:
while(x > 0) {
for(int i = 5; i > 0 && x!=0; i++) {
x = x-2;
}
}
如果x等于0,for循环会留下。然后你的while条件将被验证:x小于0(它为零),所以while循环也会停止执行。
考虑到'x'当你休息时等于零,同时条件也是错误的;) – akaIDIOT 2013-03-20 14:05:17