黑马程序员技术交流社区
标题:
关于while循环中变量自增自减的一点疑惑
[打印本页]
作者:
wjj410830911
时间:
2013-11-19 16:40
标题:
关于while循环中变量自增自减的一点疑惑
class Pan
{
public static void main(String[] args)
{
int x=10;
while ((x--)>0)
{
if(x%2==0)
continue;
System.out.println("x="+x);
}
int y=10;
while (y>0)
{
if((y--)%2==0)
continue;
System.out.println("y="+y);
}
}
}
复制代码
上面2个while循环第一个的结果是x=9,7,5,3,1,都是奇数,
为什么第二个循环的结果是y=8,6,4,2,0,都是偶数,不太理解
求高手指点一下。
作者:
汪洋大海
时间:
2013-11-19 16:52
现在这种简单的问题都没有技术分了,,所以最好不要往这里发了。。
作者:
″先森丶玹°
时间:
2013-11-19 17:14
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反过来理解就行了
作者:
应用控老童鞋
时间:
2013-11-19 17:21
提示:
作者被禁止或删除 内容自动屏蔽
作者:
mayor125
时间:
2013-11-19 19:40
分析一下你这个程序吧,首先要明确几个知识点:
1、自减(x--和--x)。x--表示先进行赋值操作,再自减1;--x表示先自减1,再进行赋值操作(总结一点:不管怎样都要减1)。
2、continue关键字:表示结束当前循环,继续下一轮循环,并且如果continue;语句后面还有其它语句的话,一律不再执行,直接进入到下一轮循环。
3、取模运算自不用说了,就是取余数。
第一个while循环:
int x = 10;
while((x--)>0)
{
if(x%2==0)
continue;
System.out.println("x="+x);
}
复制代码
第一轮
: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循环:
int y = 10;
while(y>0)
{
if((y--)%2==0)
{
continue;
}
System.out.println("y="+y);
}
复制代码
第一轮
: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都是偶数。
希望能够帮到你,回答问题也是对自己掌握基础知识的一种检测,搞明白了,印象就深刻了不容易忘,呵呵!!!
作者:
呆呆呆
时间:
2013-11-19 20:24
楼上说好的详细啊,一看就懂了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2