0

我将向您展示我提交的作业的答案以给出它的想法

void chkbnch()
{
    System.out.println("\n The students under notice period are =>\n\n");
    for(int i=0;i<25;i++)
    **ol:{**
        int cnm=0;
        int cnm2=0;
        for(int j=0;j<7;j++)
        {
            if(mrks[i][j]>=50)
            {
                cnm++;
            }
            if(cnm==3)
            {
                    //i++;
                    **break ol;**
            }
            if(mrks[i][j]<50)
            {
                cnm2++;
            }
        }
        if(cnm2>=3||cnm<3)
        {
            System.out.println("\n Student id =>"+(i+1));
        }
    }
}

在这里,当我不希望循环增加并重复循环语句时,我使用了 break。我知道这也可以通过减少循环控制来完成,但这不是我的问题。

我想问的是在java中定义的这种行为,或者这只是它的结果的机会。

4

2 回答 2

-1

似乎您想要 continue 关键字而不是 break。continue中断循环的当前迭代并且执行跳回到评估阶段,如果评估通过,则循环继续。 break中断循环的当前迭代并且执行跳转到循环结束右括号之后的第一行。

编辑:如果您在循环时需要循环增量控件“不增加” continue,例如,在继续后从循环的列表中拉出相同的对象,那么您需要推出自己的解决方案。

于 2017-09-13T17:56:05.687 回答
-1

break语句的这种使用是完全合法的,尽管它是不寻常的,并且它并没有按照你所说的那样做。

JLS §14.15说:

break带有标签标识符的语句尝试将控制转移到封闭的标签语句(第 14.7 节),该语句具有与其标签相同的标识符;此语句称为break target,然后立即正常完成。在这种情况下,break 目标不必是switch, while, do, 或for语句。

您示例中的“标记语句”是{.. }block 语句,它是for循环执行的语句。当您执行 break 时,该块语句完成,它将控制权返回给for循环,循环继续执行 increment i++,测试条件i<25,然后继续循环。

它与直接标记外循环,然后使用continue ol;.

循环计数器仍将递增。如果你想防止这种情况发生,要么用手动来抵消它,要么移出i--;循环头并移到循环体的末尾。i++;for

于 2017-09-13T18:20:50.393 回答