我有以下代碼:破嵌套循環和主迴路
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循環?
乾杯!
我有以下代碼:破嵌套循環和主迴路
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