<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
    數(shù)據(jù)加載中……

    跳出多層循環(huán)的簡單方法(Java版)

    本文為原創(chuàng),如需轉(zhuǎn)載,請注明作者和出處,謝謝!

        在Java程序中可能使用多層循環(huán)來處理復(fù)雜的邏輯。但如果要從最內(nèi)層循環(huán)跳出最外層循環(huán)是比較麻煩。下面的代碼是一個三層循環(huán)的例子:

    String[] arr= new String[]{"a""b""c"};       
    for(String s: arr)
    {
       
    for(String ss: arr)
        {
           
    for(String sss: arr)
            {
                System.out.println(sss);
            }
        }               
    }

        如果要從第三層循環(huán)跳出第一層循環(huán),可以通過設(shè)置標(biāo)志的方法來實(shí)現(xiàn),但這比較麻煩。當(dāng)然,如何使用過C或C++的開發(fā)人員可以想到使用goto語句,如下面的代碼所示:

    String[] arr= new String[]{"a""b""c"};   
      
    for(String s: arr)
    {
        
    for(String ss: arr)
        {
            
    for(String sss: arr)
            {
                System.out.println(sss);
                goto label;
            }
        }               
    }
    label:

        雖然上面的代碼看似可行,不過Java雖然還有g(shù)oto關(guān)鍵字,但這個關(guān)鍵字卻不能使用(Java編譯器會拋出異常)。不過Java還提供了另外一種類似goto的解決方案,這就是break n和continue n。其中n表示標(biāo)簽名。只是在Java中只能在for、while、do...while三種循環(huán)語句前面定義,標(biāo)簽與循環(huán)體之間不能有任何其他的語句,如下面的標(biāo)簽定義是合法的:

    label:  // 定義標(biāo)簽
    for(int i = 0; i < 10; i++)
    {
        ... ...
    }

        下面的標(biāo)簽定義是不合法的:

    label:  // 定義標(biāo)簽
    System.out.println("abcd");  // 此處不能有任何Java語句
    for(int i = 0; i < 10; i++)
    {
        ... ...
    }

        使用break n跳出多層循環(huán)的代碼如下:

    labelA:
    for(String s: arr)
    {            
        
    for(String ss: arr)
        {
            
    for(String sss: arr)
            {
                System.out.print(sss);
                
    break labelA;
            }
        }               
    }

        上面的代碼只輸出了一個a,在第三層使用break labelA可以理解為如下的代碼形式(雖然這段代碼并不符合Java語法規(guī)則):

    for(String s: arr)
    {            
        
    for(String ss: arr)
        {
            
    for(String sss: arr)
            {
                System.out.print(sss);
                
    goto labelA;
            }
        }               
    }
    labelA:

        當(dāng)然,還可以使用continue labelA繼續(xù)執(zhí)行某一層的循環(huán),代碼如下:

    labelA:
    for(String s: arr)
    {            
        
    for(String ss: arr)
        {
            
    for(String sss: arr)
            {
                System.out.print(sss);
                
    continue labelA;
            }
        }               
    }

         上面的代碼輸出“aaa”,讀者可以將上面的代碼理解為如下的形式(只是代碼形式,并不符合Java語法規(guī)則):

    for(String s: arr)
    {            
        
    for(String ss: arr)
        {
            
    for(String sss: arr)
            {
                System.out.print(sss);
                
    goto labelA;
            }
        }               
    labelA:
    }

        當(dāng)然,也可以按同樣的方法跳出或繼續(xù)第二層循環(huán),代碼如下:

    for(String s: arr)
    {            
        labelA:
        
    for(String ss: arr)
        {
            
    for(String sss: arr)
            {
                System.out.print(sss);
                
    break labelA;
            }
        }               
    }

        上面的代碼輸出“aaa”。

    for(String s: arr)
    {            
        labelA:
        
    for(String ss: arr)
        {
            
    for(String sss: arr)
            {
                System.out.print(sss);
                
    continue labelA;
            }
        }               
    }

        上面的代碼輸出“aaaaaaaaa”。




    Android開發(fā)完全講義(第2版)(本書版權(quán)已輸出到臺灣)

    http://product.dangdang.com/product.aspx?product_id=22741502



    Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


    新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

    posted on 2009-01-30 11:23 銀河使者 閱讀(3352) 評論(8)  編輯  收藏 所屬分類: java 原創(chuàng)

    評論

    # re: 跳出多層循環(huán)的簡單方法(Java版)  回復(fù)  更多評論   

    Java里可以用goto呀
    2009-01-30 15:23 | Robin's Java World

    # re: 跳出多層循環(huán)的簡單方法(Java版)  回復(fù)  更多評論   

    不可以的,我試了,編譯不過去。我用的是jdk6
    2009-01-30 16:13 | 銀河使者

    # re: 跳出多層循環(huán)的簡單方法(Java版)  回復(fù)  更多評論   

    @銀河使者
    可以呀,你再試試吧!
    2009-01-30 18:34 | Robin's Java World

    # re: 跳出多層循環(huán)的簡單方法(Java版)  回復(fù)  更多評論   

    象下面的程序可以嗎?
    String[] arr = new String[]{"a", "b", "c"};
    for(String s: arr)
    {
    for(String ss: arr)
    {
    for(String sss: arr)
    {
    System.out.print(sss);
    goto labelA;
    }
    }
    }
    labelA:

    不行啊,
    2009-01-30 19:27 | 銀河使者

    # re: 跳出多層循環(huán)的簡單方法(Java版)  回復(fù)  更多評論   

    @Robin's Java World
    我試了,的確不可以,就象java的const關(guān)鍵字,也不能使用,雖然是保留字。如果你有可以的例子,貼了來,讓我也學(xué)習(xí)一下。
    2009-01-30 19:33 | 銀河使者

    # re: 跳出多層循環(huán)的簡單方法(Java版)  回復(fù)  更多評論   

    路過學(xué)習(xí)
    2009-01-31 00:26 | 聊天室

    # re: 跳出多層循環(huán)的簡單方法(Java版)  回復(fù)  更多評論   

    @銀河使者
    不好意思,可能是我記錯了。
    2009-01-31 00:57 | Robin's Java World

    # re: 跳出多層循環(huán)的簡單方法(Java版)  回復(fù)  更多評論   

    JDK1.4可以用標(biāo)簽不?
    2009-06-07 20:36 |
    主站蜘蛛池模板: 国产伦精品一区二区三区免费迷| 亚洲一区二区三区国产精华液| 国产极品粉嫩泬免费观看| 99蜜桃在线观看免费视频网站| 国产精品美女久久久免费 | 国产免费A∨在线播放| 亚洲av无码专区在线观看下载| 77777_亚洲午夜久久多人| 亚洲中文字幕在线观看| 亚洲va中文字幕无码| 日本一道高清不卡免费| 毛片a级毛片免费播放100| 久草视频在线免费| 无码A级毛片免费视频内谢| 国产精品美女久久久免费| 五月婷婷免费视频| 青娱乐在线免费观看视频| 亚洲成在人线在线播放无码| 亚洲一区二区三区四区视频| 亚洲最大在线视频| 亚洲欧洲日韩综合| 亚洲乱码卡三乱码新区| 亚洲欧洲视频在线观看| 亚洲影院在线观看| 久久精品国产亚洲av日韩| 老色鬼久久亚洲AV综合| 中文字幕亚洲精品| 亚洲国产成人私人影院| 亚洲综合一区二区国产精品| 久久亚洲精品AB无码播放| 久久精品国产精品亚洲蜜月 | 日韩免费视频一区二区| 99热这里只有精品6免费| 久久国产精品免费网站| 67194成手机免费观看| 91福利视频免费| 免费无码黄十八禁网站在线观看| 国产va免费精品观看精品| 成年女人看片免费视频播放器| 美女网站免费福利视频| 国外成人免费高清激情视频|