这是两个程序,下面一个程序是我改动后的。我把if (i++>--j)  break;语句改为两个语句,分别为if (i++>--j);和  break;但是改动后,输出的结果却相差那么大。
public class Car{
public static void main(String[] args){
int i=1,j=10;
do{
if (i++>--j)  break; }while(i<15);
System.out.println("i="+i+",j="+j);
}
}
    ---------public class Car{
public static void main(String[] args){
int i=1,j=10;
do{
       if (i++>--j);
                         break; }while(i<15);
System.out.println("i="+i+",j="+j);
}
}现在讨论第二个程序,break的意思是跳出离break最近的循环。本来应该是当i++>--j的时候,也就是6>4的时候跳出的,此时执行结果应该是i=7,j=4;也就是说结果应该跟第一个程序是一样的。但程序执行出来的结果是2和9。这就是说明,程序一运行就跳出来了。
所以想请各位大哥大姐姐,帮忙解释一下原因。

解决方案 »

  1.   

    1、if (i++>--j); 
    2、break;看这两句,第一句后面有个冒号,也就是说这是单独的一句,不管他的值为TRUE还是FALSE,他都要走2的
    也就是说,i++和-j之后就break跳出了循环,打印的当然是2和9了。 
      

  2.   

    我想应该就是把break顺序执行了。
    if(i++>--j)中对i,j进行了操作,然后顺序执行break语句。
      

  3.   

    第一个程序之中,if (i++>--j)  break;是一个整体,而第二个程序中if (i++>--j);  break;是两个顺序的语句。第一个程序中只有满足了if的条件才执行break,而第二个是程序中两个语句的地位是平等的,顺序执行。我是这么理解的。
      

  4.   

    建议楼主用debug看结果比较好
      

  5.   

     if (i++>--j); 
                            break; 
    if后是空语句,执行完后再执行break语句,
    所以这个循环只执行了一次就跳出了.
      

  6.   


    //第一个符合条件才跳出
    if (i++>--j)
    {
       break; 
    }
    //第二个,不管如何都跳出
    if (i++>--j)
    {}break; 
      

  7.   


    public class Car{ 
    public static void main(String[] args){ 
    int i=1,j=10; //**************************初始化i=1,j=10
    do{ 
    if (i++>--j)  break; //*******************当i++的值大于--j的时候,break跳出循环,
                            //*******************此时i=6,j=4}while(i <15); 
    System.out.println("i="+i+",j="+j); 

    }public class Car{ 
    public static void main(String[] args){ 
    int i=1,j=10; 
    do{ 
          if (i++>--j); //************此处i=1,j=9.由于if循环后面有分号,所以if语句运行结束。而
                           //break语句是跳出离它最近的“有效循环”,因为if循环后面的分号已经结束了
                           //所以已经不是有效循环了,所以break结束的是while循环了!
              
                     break;    }while(i <15); 
    System.out.println("i="+i+",j="+j); 

      

  8.   

    谁要是把代码写成 i++ > --j 纯属是没事找事做型的。
      

  9.   

    if (i++>--j); 
                            break; 
    把第一个";"去掉就一样了,理由同意二楼的.
      

  10.   

    IF(){}ELSE{}
    不管如何简单加上这大括号永远是个好习惯,又不浪费时间又不降低效率.
       如果没写有时出个GUB找得要死人..