关于while循环语句,循环体为空。

时间:2023-02-09 20:43:17
int x,y;
x = 100;
y = 200;
while(++x<--y);
system.out.println(x);


为什么输出结果是150,按我的思路结果应该是101,谁能给我讲讲啊。

我的理解就是 :X自加了,得101,Y自减了,得199,101<199,所以条件为真,但没有循环体,所以什么都不执行。最后直接输出X 为101。

12 个解决方案

#1


程序是从上面一直向下运行,首先在符合条件的情况下执行  while(++x <--y); 
  而在149前都是符合条件的,这个语句其实被执行了49次,才跳到System.out.println(x);这一句的.
    按照你的理解,while(++x <--y)只执行了一次,但是102,103同样的符合while条件的.呵呵
       所以不会马上打印出第一次符合条件的X,而是到了149后,在条件判断前自加一,判断条件不成立才跳到下一句.
  
         如果写成while(++x <--y){
             System.out.println(x);
                 } 
                 那么就会打印出101~~~149所有的数.

#2


由于你的while循环后面有一个分号所造成的。你把分号去掉就可以了。
因为你的while循环没有大括号,所以你的代码的意思其实是如果++x的值小于--y的值就什么也不做,继续循环
知道++x不再小于--y才退出循环执行打印x的值

#3


写成while(++x  <--y){ 
             System.out.println(x); 
                 }  
                 那么就会打印出101~~~149所有的数


楼上的说的是……

#4


条件不满足的时候才结束循环,执行循环以后的语句

#5


while(++x <--y); ==== while(++x <--y){}

#6


while(++x<--y){} 
小括号里的内容不就是个判断的条件吗,真正要循环的东西应该在大括号里啊。

为什么小括号里的条件自己循环起来了?

还是没太明白

   

#7


int x,y; 
x = 100; 
y = 200; 
while(x <y){++x;--y;}; 
system.out.println(x); 
你的语句相当于这样,当然会循环

#8


while语句是直到循环到while(false)才结束

#9


就是因为++x<--y成立阿。所以肯定是要执行循环体,由于你就写了个分号,循环体为空,什么也没执行,但是循环条件返回++x<--y仍然为true所以继续执行语句++x<--y来计算循环条件的返回值为true还是false以此类推,知道++x<--y返回为false的时候循环才退出这个是基础的问题了。初学总会有些东西把自己给饶进取,建议出去吸根烟,可能回来就想明白了。呵呵

#10


 while 后面多了一个";"

#11


明白了  谢谢

#12


改前
int x,y; 
x = 100; 
y = 200; 
while(++x <--y){
//......
}; 
System.out.println(x);
改后
int x,y; 
x = 100; 
y = 200; 
while(++x <--y){
System.out.println(x);

}; 

#1


程序是从上面一直向下运行,首先在符合条件的情况下执行  while(++x <--y); 
  而在149前都是符合条件的,这个语句其实被执行了49次,才跳到System.out.println(x);这一句的.
    按照你的理解,while(++x <--y)只执行了一次,但是102,103同样的符合while条件的.呵呵
       所以不会马上打印出第一次符合条件的X,而是到了149后,在条件判断前自加一,判断条件不成立才跳到下一句.
  
         如果写成while(++x <--y){
             System.out.println(x);
                 } 
                 那么就会打印出101~~~149所有的数.

#2


由于你的while循环后面有一个分号所造成的。你把分号去掉就可以了。
因为你的while循环没有大括号,所以你的代码的意思其实是如果++x的值小于--y的值就什么也不做,继续循环
知道++x不再小于--y才退出循环执行打印x的值

#3


写成while(++x  <--y){ 
             System.out.println(x); 
                 }  
                 那么就会打印出101~~~149所有的数


楼上的说的是……

#4


条件不满足的时候才结束循环,执行循环以后的语句

#5


while(++x <--y); ==== while(++x <--y){}

#6


while(++x<--y){} 
小括号里的内容不就是个判断的条件吗,真正要循环的东西应该在大括号里啊。

为什么小括号里的条件自己循环起来了?

还是没太明白

   

#7


int x,y; 
x = 100; 
y = 200; 
while(x <y){++x;--y;}; 
system.out.println(x); 
你的语句相当于这样,当然会循环

#8


while语句是直到循环到while(false)才结束

#9


就是因为++x<--y成立阿。所以肯定是要执行循环体,由于你就写了个分号,循环体为空,什么也没执行,但是循环条件返回++x<--y仍然为true所以继续执行语句++x<--y来计算循环条件的返回值为true还是false以此类推,知道++x<--y返回为false的时候循环才退出这个是基础的问题了。初学总会有些东西把自己给饶进取,建议出去吸根烟,可能回来就想明白了。呵呵

#10


 while 后面多了一个";"

#11


明白了  谢谢

#12


改前
int x,y; 
x = 100; 
y = 200; 
while(++x <--y){
//......
}; 
System.out.println(x);
改后
int x,y; 
x = 100; 
y = 200; 
while(++x <--y){
System.out.println(x);

};