int i = 2;
i += i-=i*i;
System.out.println(i);这个结果为什么是0而不是-4; do
{
i--;
System.out.println(i);

continue;


}
while(i>0);这个里面的continue后面加上语句就报错这是为什么?我用debug跟这个程序他好像不会执行到continue这一句

解决方案 »

  1.   

    第一个:java里面好像不可以用连=(a=b=c这个在java里面是不允许的)
    第二个:continue结束本次循环,本次循环都结束了,后面的语句当然就不在执行了,加了没什么用。
     do
            {
                i--;
                System.out.println(i);
                
                continue;
            
      这里的语句在循环中,不在执行。         
            }
      

  2.   

    分解下:i=i+(i-i*i);结果为0.
      

  3.   

     i += i-=i*i; 
    从右向左,
    i+= i-=4;
    i+= 0;
    i=0;2.continue下面的语句永远不会被执行到,所以报错
      

  4.   

    他有个 i -=i*i 这样i不是等于-2了吗?然后i+i不是等于-4了吗?
      

  5.   


    continue则停止执行当前的反复,然后退回循环起始和,开始新的反复。continue 用于跳过循环体中的一部分语句,也就是不执行这部分语句
      

  6.   

    你要注意优先级。
    并且你的小学数学啊~~
    i-=4---->i=i-4即i=2-4即i=-2
    然后执行
    i+=-2;
    i就变成0了。
      

  7.   

    第一个也不难啊
    计算机室从前往后算,但是赋值是从后往前的
    i*i=4,i=i-4=-2,i=i+(-2)=0
      

  8.   

    对于第一个问题,我想说的是实际中不会这样写,可读性不强,太繁琐,第一个语句从右到左依次运算就可以得到结果0;
    对于第二个问题,continue跳出当前循环的操作 ,继续执行这个循环的下个操作,后面语句都不会执行,所以continue后面的代码就是unreachable code,以后遇到报错要看看是什么类型的错误,这才是好的习惯
      

  9.   

    最后i+=-2;这里的i不会变成-2吗?前面的i好像已经变成了-2了。
      

  10.   

    哈哈,LZ我确实很业余,但是估计咱们这种同水平会有沟通点。i不会变成-2的。i=i+(-2)你可以看成
    int k = i + (-2);
    i=k;//此时i确实等于2,但是i是变量啊,所以k又把值传给了i;i就等于0了。