java中怎样任意跳转到指定行而不受循环语句限制

break和continue只能用在循环中我想在switch语句里某个case中跳转回上一层的代码,同属于一个类中,应该怎么做。按照网上的说法label:breaklab... break和continue只能用在循环中
我想在switch语句里某个case中跳转回上一层的代码,同属于一个类中,应该怎么做。
按照网上的说法
label:
break label;
这种用法能任意使用,但在我这就说找不到标签
展开
 我来答
灵长目1990
推荐于2017-11-22 · TA获得超过2716个赞
知道小有建树答主
回答量:956
采纳率:50%
帮助的人:934万
展开全部

  您好,break label不是任意使用的,它只能直接用在代码块(for/while/switch/if/大括号)上,注意是“直接”,下面举例说明:

  1.代码一(直接用在for上,这是最普遍的用法,正确):

        int i = 1;
label:
        for (int j = 1; j < 5; j++) {
            if (j % 2 == 0)
                break label;
            
            System.out.println(j + "-----" + i);
        }

  2.代码二(注意这里加了大括号,所以构成了一个代码块,也正确

label:
        {
            int i = 1;
            for (int j = 1; j < 5; j++) {
                if (j % 2 == 0)
                    break label;
                
                System.out.println(j + "-----" + i);
            }
        }

  3.代码三(错误,label没有直接用在代码块上,对比代码二,缺少了大括号包围)

label:
        int i = 1;
        for (int j = 1; j < 5; j++) {
            if (j % 2 == 0)
                break label;
            
            System.out.println(j + "-----" + i);
        }

  4.代码四(错误,break label;没有包含在label标记的代码块中,代码三的错误也能用这个解释)

label: {
            int i = 1;
        }
        
        for (int j = 1; j < 5; j++) {
            if (j % 2 == 0)
                break label;
            
            System.out.println(j + "-----" + i);
        }


  综上所述,相比起C语言中goto的任意跳转,这个break label的使用并不是那么自由,需要多留意。


  另外,不建议使用过多的这种语句,会破坏程序结构的完整性。


  -----您的采纳是我们的动力-----

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式