Java 如何退出循环?

Java 如何退出循环?,java,Java,我有下面的代码。我写了一个for循环,里面有switch语句。该开关有两种情况,如果i==someOtherValue为真,则整个循环应退出 for (//iterate over elements){ int i = someValueTakenFromLoop; if(i==someOtherValue){ switch(i){ case 5: //some logic

我有下面的代码。我写了一个for循环,里面有switch语句。该开关有两种情况,如果
i==someOtherValue
为真,则整个循环应退出

for (//iterate over elements){
    int i = someValueTakenFromLoop;
    if(i==someOtherValue){

        switch(i){
            case 5:
                //some logic
                break;
            case 6:
                //some logic
                break;
         }
     }
 }
当迭代时,如果
i==someOtherValue
为真,则它应该退出循环。我需要保持断路器在侧开关外吗

    for(//iterate over elements){
        int i = someValueTakenFromLoop;
        if(i==someOtherValue){
            switch(i){
                case 5:
                    //some logic
                    break;
                case 6:
                    //some logic
                    break;
            }
            break;
         }
     }
谢谢

是的

当您断开内部开关时,控制只是从开关中出来,而不是从外部循环中出来,因此您必须再次断开外部开关以断开循环,或者使用带标签的循环,但如果您使用带标签的代码,请将其大写,以提高可读性,使其突出并可以清晰地读取,尽管Java惯例建议使用驼峰式外壳

一,

二,


如果只有两种情况,为什么不使用更简单的
If-else If
语句而不是
开关

您应该按以下规定设置一个
中断

if  (i == someOtherValue ) {  
  break; // breaks for loop
} // for some other value
// switch( to continue here
...

前一个
break
仅使其脱离
switch
语句。下面的一个将起作用

for(/*iterate over elements*/){
    int i = someValueTakenFromLoop;
    if(i==someOtherValue){
        switch(i){
        case 5:
            //some logic
            break;
        case 6:
            //some logic
            break;
        }
        break;
    }
}

edalorzo的解决方案是完美的,但我想补充一点(并且没有评论):

您几乎总是可以使用方法重新构造这种控制结构--

编辑: 刚刚注意到您打算独立于开关条件断开-非常简单:

for ( /* ... */ ) {
    if ( /* ... */ ) {
        switch ( /* ... */ ) { /* ... */ }
        break;
    }
}

如果i==someOtherValue为true,则应退出循环&&如果i==someOtherValue为true,则应退出整个循环。赚不了多少钱sense@JigarJoshi我很好奇,这是问题的答案吗?如果满足条件,OP希望中断for循环。如果命中案例x,这不会再次启动for循环吗?我对Java不太在行,所以可能我遗漏了什么,你能澄清一下吗?@carlvinder break语句导致for循环停止迭代。您所描述的是另一个名为
continue
的关键字的功能,它将停止当前迭代并将控制权返回for循环以继续下一次迭代。啊,对了,因此它将中断到mylabel,然后在for循环结束时继续执行。我说得对吗?我想这和goto mylabel很相似;我认为它是java中进行goto的一种方式。谢谢你澄清:)@carlvinder你说得对,控制流将在for循环后的下一条语句中继续。非常感谢:)下次我用Java做任何事情时,我一定会记住这一点!
if  (i == someOtherValue ) {  
  break; // breaks for loop
} // for some other value
// switch( to continue here
...
for(/*iterate over elements*/){
    int i = someValueTakenFromLoop;
    if(i==someOtherValue){
        switch(i){
        case 5:
            //some logic
            break;
        case 6:
            //some logic
            break;
        }
        break;
    }
}
for ( /* ... */ ) {
    boolean finished = doSomething(i);
    if (finished) {
        break;
    }
}

//Later in the same class
private boolean doSomething(int val) {
    switch (val) {
        case 0:
            // do something;
            return true; // Break out of outer loop
        case 5:
            // do something absolutely terrifying
            break;
    }
    return false;
}
for ( /* ... */ ) {
    if ( /* ... */ ) {
        switch ( /* ... */ ) { /* ... */ }
        break;
    }
}