A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© prospect 初级黑马   /  2012-7-22 12:40  /  2039 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当有多重循环嵌套时,如何跳出当前的多重嵌套循环?

5 个回复

倒序浏览
给你个例子:
以输出101到200的所有素数为例:

   lable:
  for(int i = 101; i<=200; i++){
   
    for(int j = 2;j < Math.sqrt(i);j++)
    {
     if(i%j == 0)
     continue lable;
    }
    System.out.println(i);
     
  }

用两个for循环,当执行continue lable;语句时,直接跳到lable处,开始继续执行语句。

用continue语句只能结束本次循环,执行该循环语句的下次循环,而用了lable之后,可以跳出多次for循环(本题为两层,理论上可任意多层)。

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼上是的 定义标签,指定跳出
回复 使用道具 举报
本帖最后由 李东升 于 2012-7-23 14:03 编辑

可以使用continue和break关键字来跳出循环。


代码:
  1. public static void main(String[]args){
  2.                  for(int i=0;i<10;i++){
  3.              for(int j=0;j<10;j++){
  4.                      System.out.print(i+""+j);
  5.                      if(i==j){
  6.                              //System.out.print("-");
  7.                              //continue;
  8.                              //System.out.print("相同了,跳出全部循环");
  9.                              //break;
  10.                      }
  11.                      System.out.print("'\t");
  12.              }
  13.              System.out.println();
  14.      }
  15.      System.out.println("OVER");
  16.         }
复制代码
这是没用跳出关键字的嵌套循环,输出结果
  1. 00'        01'        02'        03'        04'        05'        06'        07'        08'        09'       
  2. 10'        11'        12'        13'        14'        15'        16'        17'        18'        19'       
  3. 20'        21'        22'        23'        24'        25'        26'        27'        28'        29'       
  4. 30'        31'        32'        33'        34'        35'        36'        37'        38'        39'       
  5. 40'        41'        42'        43'        44'        45'        46'        47'        48'        49'       
  6. 50'        51'        52'        53'        54'        55'        56'        57'        58'        59'       
  7. 60'        61'        62'        63'        64'        65'        66'        67'        68'        69'       
  8. 70'        71'        72'        73'        74'        75'        76'        77'        78'        79'       
  9. 80'        81'        82'        83'        84'        85'        86'        87'        88'        89'       
  10. 90'        91'        92'        93'        94'        95'        96'        97'        98'        99'       
  11. OVER
复制代码
使用continue关键字的输出结果。
  1. 00-01'        02'        03'        04'        05'        06'        07'        08'        09'       
  2. 10'        11-12'        13'        14'        15'        16'        17'        18'        19'       
  3. 20'        21'        22-23'        24'        25'        26'        27'        28'        29'       
  4. 30'        31'        32'        33-34'        35'        36'        37'        38'        39'       
  5. 40'        41'        42'        43'        44-45'        46'        47'        48'        49'       
  6. 50'        51'        52'        53'        54'        55-56'        57'        58'        59'       
  7. 60'        61'        62'        63'        64'        65'        66-67'        68'        69'       
  8. 70'        71'        72'        73'        74'        75'        76'        77-78'        79'       
  9. 80'        81'        82'        83'        84'        85'        86'        87'        88-89'       
  10. 90'        91'        92'        93'        94'        95'        96'        97'        98'        99-
  11. OVER
复制代码
i和j相同的时候,在if语句结束后的点没有输出,是输出-之后,直接进入下一次循环


使用break关键字的输出结果
  1. 00相同了,跳出全部循环
  2. 10'        11相同了,跳出全部循环
  3. 20'        21'        22相同了,跳出全部循环
  4. 30'        31'        32'        33相同了,跳出全部循环
  5. 40'        41'        42'        43'        44相同了,跳出全部循环
  6. 50'        51'        52'        53'        54'        55相同了,跳出全部循环
  7. 60'        61'        62'        63'        64'        65'        66相同了,跳出全部循环
  8. 70'        71'        72'        73'        74'        75'        76'        77相同了,跳出全部循环
  9. 80'        81'        82'        83'        84'        85'        86'        87'        88相同了,跳出全部循环
  10. 90'        91'        92'        93'        94'        95'        96'        97'        98'        99相同了,跳出全部循环
  11. OVER
复制代码
在i和j相等的时候,不止没有输出点,连后面数字都没输出,直接执行i变化后的循环。也就是直接跳出了内层循环

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 很给力!

查看全部评分

回复 使用道具 举报
continue跳出本次循环,进入下次循环。break跳出整个循环,循环结束
回复 使用道具 举报
可以用tag标记一下,开始的时候tag为false,当循环到需要退出的时候,tag标记为true
假设是个二重循环,当外层循环到10,内存循环到9的时候退出
简单示例代码:
boolean tag = false
for(int i =0;i<100;i++)
{
  if(!tag)
    for(int j = 0;j<100;j++)
   {
     if(i == 10 && j == 9)
         {
            tag = true;
            break;
           }
   }
   else
     break:
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马