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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yogaa 中级黑马   /  2014-4-20 18:25  /  1517 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Shut{
        public static void main(String[] args){
                int i=0;
                int j=0;
                A1:
                while(true) {
                  i=i+1;
                  A2:
                  while(j<100) {
                     j=j+1;
                     if(j==50)
                        break A2;
                     
                  
                }
                System.out.println(j);
                }
        }
}
输出的j怎么能是100,而不是50呢?不是在A2处中断了吗?

评分

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

查看全部评分

5 个回复

倒序浏览
本帖最后由 忘川 于 2014-4-20 19:53 编辑

  1. public class Shut{
  2.         public static void main(String[] args){
  3.                 int i=0;
  4.                 int j=0;
  5.                 A1:
  6.                 while(true) {//这个位置,while(true)是while无限循环啊
  7.                   i=i+1;
  8.                   A2:
  9.                   while(j<100) {
  10.                      j=j+1;
  11.                      if(j==50)
  12. /*
  13. 第一次到达这个位置的时候,跳出到A2标号了,往下执行,然后输出50
  14. 但是你只是跳出A2而不是跳出A1,你还在while(true)这个循环里,进入下一次循环了,又走到了while(j<100这里)
  15. 这时候j的值已经是50了,在进行if(j==50)这个判断之前,j先执行了j+1操作,所以if(j==50)时,j的值是51,不会再执行到break了,而是
  16. 一直循环直到j=100的时候跳出while(j<100)循环,这时候输出自然是100
  17. */                              
  18.                      break A2;
  19.             
  20.                   
  21.                 }
  22.                 System.out.println(j);
  23.                 }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
咦....不知道为嘛我插入代码论坛自动给我插入了<p></p>标签,你看的时候把<p>忽略掉看好了
回复 使用道具 举报
忘川 发表于 2014-4-20 19:51
咦....不知道为嘛我插入代码论坛自动给我插入了标签,你看的时候把忽略掉看好了 ...

原来是A1那里又进行循环了啊,我又测试了一下,把A1那里的循环除掉了,运行结果就是50了,呵呵,谢谢啊~你的回答对我很有帮助~:lol
回复 使用道具 举报
当j==50时,跳向A2结点;然后又执行while循环,此时j<100成立,于是又进入循环,j=j+1得到51,而j==50不成立,不会再次跳向A2而是不断循环直到j==100,跳出while(j<100)循环;所以此时输出100,由于外层循环是while(true),所以不断输出100。总之,楼主疑惑的地方是没有明白跳到A2后,又会执行while(j<100),而不是什么也不执行。
回复 使用道具 举报
yogaa 发表于 2014-4-20 19:57
原来是A1那里又进行循环了啊,我又测试了一下,把A1那里的循环除掉了,运行结果就是50了,呵呵,谢谢啊~ ...

:lol有帮助就好 大家一起加油吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马