黑马程序员技术交流社区
标题:
while循环语句隐藏的问题?求解。
[打印本页]
作者:
崔瑞龙
时间:
2012-4-23 23:07
标题:
while循环语句隐藏的问题?求解。
class WhileDome
{
public static void main(String[] args)
{
/*
定义初始化表达式:
while(条件表达式)
{
循环体(执行语句);
}
*/
int x = 1;
while (x<3)
x++;//为什么x++放在这运行出结果为x=3,放在下面输出语句的时候运行结果为x=1,x=2。
System.out.println("x="+x);
int x1 = 1;
do
{
System.out.println("do:x="+x1);
}
while (x1<0);
}
/*
while:先判断条件,只有条件满足才执行循环体。
do while:先执行循环体,在判断条件,条件满足,再继续执行循环体。
简单一句话:do while 无论条件是否满足,条件体至少执行一次。
*/
}
while循环语句,为什么编译运行完得出结果x=3,我本来以为会是x=1,x=2;求指点。
作者:
真真姐
时间:
2012-4-23 23:13
本帖最后由 杨国祯 于 2012-4-23 23:16 编辑
这就是代码不规范
int x = 1;
while (x < 3)
{
x++;
}
// x=3 ,跳出
System.out.println("x=" + x);
复制代码
给你分解了下,你的while为什么不加上括号,加上括号的话一定等于3,才会跳出,然后执行了打印就是这样
作者:
应佳锋
时间:
2012-4-23 23:14
WHILE 语句 i使用了++ 就是x=x+1 但是你上面有一个条件是X<3 也就是说当X<3的时候不会执行这循环 当然打印出3了
你搞错了吧肯定是按照书上来打的 你代码规范点 把括号什么的都括起来 自己就懂了
int x = 1;
while (x<3)
{
System.out.println(x);
x++;//为什么x++放在这运行出结果为x=3,放在下面输出语句的时候运行结果为x=1,x=2。
}
System.out.println("x="+x);
作者:
栗学魁
时间:
2012-4-23 23:34
第二个程序是先先执行循环体,在判断条件,条件满足,再继续执行循环体。
x1=1先输出,不满足循环条件,就停了
所以结果是x1=1
第一个就是x=3
作者:
蒋亮
时间:
2012-4-24 00:09
System.out.println("x="+x)这句代码你都放到循环外面去了,肯定是3了啊,你把代码改成
while(x<3){
System.out.println("x"+x);
x++;
}
作者:
王怡然
时间:
2012-4-24 00:23
应为你吧x++放在了循环体里打印语句的前面, jvm会先做完循环然后再输出x的值,
而当你把x++放在了打印语句的下面,就是循环体的最后一行的时候打印出来的值就是你想要的了,
希望能能对你有帮助.
作者:
付左军
时间:
2012-4-24 23:26
while语句只有在条件不成立时,才停止循环
执行情况是这样
JVM读到while时,该循环了,判断x<3不?小于,则x++,X=2,继续判断x=2小于3吗?小于,则X++得3,3<3不成立,while循环结束
作者:
高彰谦
时间:
2012-4-25 06:05
while (x<3)
x++;//为什么x++放在这运行出结果为x=3,放在下面输出语句的时候运行结果为x=1,x=2。
System.out.println("x="+x);
这个while并没有代码块,所以只影响下一句。 当前情况:直到x=3时不满足条件退出循环,转而执行输出,所以得到x=3;
两句调换位置,则应该是死循环,因为没有达到退出条件。且总是输出x=1;
如果要输出x=1,x=2
则必须
while(x<3){
System.out.println("x="+x);
x++
}
复制代码
do while循环体,你说的没错
作者:
马浩
时间:
2012-4-25 08:48
楼主 也写了while循环的格式,为啥不在while下用大括号把循环体括起来呢?
如果这样
int x = 1;
while (x<3)
{ System.out.println("x="+x);
x++;//为什么x++放在这运行出结果为x=3,放在下面输出语句的时候运行结果为x=1,x=2。
}
不就是楼主想要的结果啦
像楼主那种表达方式,while下有两个语句,没有括号,系统会只把第一句作为循环体运行,循环两次结束后,才执行最后一句打印X值,x++两次当然是3啦
你如果只把while下两语句换下位置,依然不加括号,你会发现,循环只执行System.out.println("x="+x);没有x++的事,屏幕会不停的打1,形成了死循环,以后写循环语句
不管语句多少,还是加括号安全些。
作者:
xiwangliujiao
时间:
2012-4-25 08:57
while语句执行到x=3时,已经不满足条件表达式x<3的要求,此时,循环就结束了,此时的x是等于3的,于是打印出来的结果也就是3了,你要是把输出语句写在while语句和x++中间的话,用一对大括号括起来,输出就是x=1和x=2了,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2