黑马程序员技术交流社区

标题: 为什么a的值是1不是2 [打印本页]

作者: 李红志    时间: 2013-3-3 17:57
标题: 为什么a的值是1不是2
public static void main(String[] args){
      int x=3,y=6,a=0;
      while(x++!=(y-=1)){
         a+=1;
          if(y<x)
           break;
}
System.out.print("x="+x+,"y="+y+,"a="+a);
}
作者: 王智威    时间: 2013-3-3 18:21
第一次计算while(3!=5) 满足条件a=1
第二次计算while(4!=4)  不满足条件就  就退出了于是a=1;
结束

x++,是先取值在+1。  ++x才是先+1再取值。

如果代码是
public static void main(String[] args){
        int x=3,y=6,a=0;
        while(++x!=(y-=1)){
           a+=1;
            if(y<x)
             break;
  }
  System.out.print("x="+x+",y="+y+",a="+a);
  }

那么a才是2。  

作者: 王智威    时间: 2013-3-3 18:24
像这样的问题不用太纠结,如何硬要纠结了话,你用断点调试一下就可以看出各个值的变化
作者: 邢义敏    时间: 2013-3-3 20:22
王智威 发表于 2013-3-3 18:24
像这样的问题不用太纠结,如何硬要纠结了话,你用断点调试一下就可以看出各个值的变化 ...

果断不会用断点调试程序,求赐教
作者: 曹睿翔    时间: 2013-3-3 21:46
邢义敏 发表于 2013-3-3 20:22
果断不会用断点调试程序,求赐教

不用着急,打基础的时候还是用editplus,断点调试需要用的eclipse,在张老师基础
作者: 全超    时间: 2013-3-3 23:13
这个程序主要有两点:
一,是++在前或在后的运算问题:我自己是这样记忆的
++在前就先+1在用(在前面比较牛{:soso_e144:}),++在后就先用后+1(--运算同理)
二,是while循环的问题:while循环要先判断循环条件,满足就执行循环一次再判断。
循环第一次判断条件成立,a+=1只运算一次.

作者: 祁振朋    时间: 2013-3-3 23:47
因为循环体只执行了一次,所以a=1.  
第二次判断条件时,while(4!=4),条件不满足,跳出循环。但是x++的运算还要进行。所以
x=5,y=4,a=1   
另外 楼主的代码System.out.print("x="+x+,"y="+y+,"a="+a);  ()里的英文半角逗号,位置有问题。会有报错

作者: 李红志    时间: 2013-3-4 12:56
哦 好吧
作者: 黑马-张明    时间: 2013-3-4 19:08
祁振朋 发表于 2013-3-3 23:47
因为循环体只执行了一次,所以a=1.  
第二次判断条件时,while(4!=4),条件不满足,跳出循环。但是x++的运 ...

还真是,第一遍看的时候都没注意到!
作者: 张鹏    时间: 2013-3-5 11:43
ls已回答问题,不过while(x++!=(y-=1))个人建议不要这样写。光看逻辑就有点晕。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2