int x,y;
x = 100;
y = 200;
while(++x<--y);
system.out.println(x);
为什么输出结果是150,按我的思路结果应该是101,谁能给我讲讲啊。我的理解就是 :X自加了,得101,Y自减了,得199,101<199,所以条件为真,但没有循环体,所以什么都不执行。最后直接输出X 为101。

解决方案 »

  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.   

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

  5.   

    while(++x<--y){} 
    小括号里的内容不就是个判断的条件吗,真正要循环的东西应该在大括号里啊。为什么小括号里的条件自己循环起来了?还是没太明白   
      

  6.   

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

  7.   

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

  8.   

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

  9.   

     while 后面多了一个";"
      

  10.   

    改前
    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);};