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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Pan
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x=10;
  6.                 while ((x--)>0)
  7.                 {
  8.                         if(x%2==0)
  9.                                 continue;                        
  10.                         System.out.println("x="+x);                        
  11.                 }
  12.                 int        y=10;
  13.                 while (y>0)
  14.                 {
  15.                         if((y--)%2==0)
  16.                                 continue;                        
  17.                         System.out.println("y="+y);                        
  18.                 }
  19.         }
  20. }
复制代码
上面2个while循环第一个的结果是x=9,7,5,3,1,都是奇数,
                        为什么第二个循环的结果是y=8,6,4,2,0,都是偶数,不太理解
                        求高手指点一下。

点评

学的深入了,基础就忘了~  发表于 2013-11-19 17:32

7 个回复

倒序浏览
现在这种简单的问题都没有技术分了,,所以最好不要往这里发了。。
回复 使用道具 举报
  int x=10;
                while ((x--)>0)
                {
                        if(x%2==0)
                                continue;  //如果满足x%2==0跳出并返回循环,不会执行下面syso,
如果不满足,则执行下面syso,也就是说,当x=10时,满足if,跳出继续while循环,x--,x=9不满足执行syso

下面的y反过来理解就行了
回复 使用道具 举报
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
分析一下你这个程序吧,首先要明确几个知识点:
1、自减(x--和--x)。x--表示先进行赋值操作,再自减1;--x表示先自减1,再进行赋值操作(总结一点:不管怎样都要减1)。
2、continue关键字:表示结束当前循环,继续下一轮循环,并且如果continue;语句后面还有其它语句的话,一律不再执行,直接进入到下一轮循环。
3、取模运算自不用说了,就是取余数。


第一个while循环:
  1. int x = 10;
  2. while((x--)>0)
  3. {
  4.         if(x%2==0)
  5.                 continue;
  6.         System.out.println("x="+x);
  7. }
复制代码
第一轮:x=10,(x--)等于9,大于0,条件满足进入循环 → 判断条件(9%2==0)结果为false,则不执行if语句的内容,直接打印x=9。
第二轮:x=9,(x--)等于8,大于0,条件满足进入循环 → 判断条件(8%2==0)结果为true,执行下面的语句continue;直接结束当前循环,进入下一轮循环。所以这里不打印x。
第三轮:x=8,(x--)等于7,大于0,条件满足进入循环 → 判断条件(7%2==0)结果为false,不执行if语句的内容,直接打印x=7。
......
以此类推,所以第一个while循环的结果x都是奇数。


第二个while循环:
  1. int y = 10;
  2. while(y>0)
  3. {
  4.         if((y--)%2==0)
  5.         {
  6.                 continue;
  7.         }
  8.         System.out.println("y="+y);
  9. }
复制代码
第一轮:y=10,y>0,条件满足进入循环 → 判断条件(y--)%2==0,结果为true,执行下面的continue;语句,跳出当前循环直接进入下一轮循环。所以这里不打印y。
第二轮:y=9,y>0,条件满足进入循环 → 判断条件(y--)%2==0,结果为false,则不执行if语句的内容,直接打印y=8;
第三轮:y=8,y>0,条件满足进入循环 → 判断条件(y--)%2==0,结果为true,执行下面的continue;语句,跳出当前循环直接进入下一轮循环。所以这里不打印y。
......
以此类推,所以第一个while循环的结果y都是偶数。


希望能够帮到你,回答问题也是对自己掌握基础知识的一种检测,搞明白了,印象就深刻了不容易忘,呵呵!!!

评分

参与人数 1技术分 +1 收起 理由
To + 1

查看全部评分

回复 使用道具 举报
楼上说好的详细啊,一看就懂了

点评

提高一下你的技术分  发表于 2013-11-21 22:14
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马