public class Trying {
   public static void main(String[] args){
  int i=2;
  while(i-->0){
  System.out.println("doing it from i is"+i);
  }System.out.println("finnis");
   }
 
}这个运行的结果为什么是:
doing it from i is1
doing it from i is0
finnis而不是:
doing it from i is1
finnis

解决方案 »

  1.   

    刚开始循环 ..  i==2 结果是i与0的比较.. 自己Debug 一下  会比较清楚.这种问题注意下就好.
      

  2.   

    i后面大的--代表先比较再减一,刚开始验证条件时i=2,验证后i变为1,所以第一次输出时i是1.就出现了这样的结果
      

  3.   

    public class Trying {
       public static void main(String[] args)
      {
          int i=2;
          while(--i>0)
           {
              System.out.println("doing it from i is"+i);
           }
    System.out.println("finnis");
       }
     
    }
    是楼主所要的答案。
    >java Trying
    doing it from i is1
    finnis
      

  4.   

    while(i-->0)
    这条语句是先用i与0比较 然后i再减1第一次循环i为2  2>0 进入循环体后 i为1
    第二次循环i为1  1>0  进入循环体后 i为0
    第三次循环i为0  跳出
      

  5.   


    //第一次序环
    public class Trying {
       public static void main(String[] args){
          int i=2;
          while(i-->0){ //第一次这里i本来是2,执行了i--.
              System.out.println("doing it from i is"+i);因为在上面执行了i--,所以这里的i=1
          }System.out.println("finnis");
       }
     
    }//第二次序环
    public class Trying {
       public static void main(String[] args){
          int i=2;
          while(i-->0){ //第二次这里i本来是1,执行了i--.
              System.out.println("doing it from i is"+i);因为在上面执行了i--,所以这里的i=0
          }System.out.println("finnis");
       }
    }