A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//java 这样写,打印的全是5 不明白?谁能告诉我
public static void main(String[] args) {
  int x = 5;
  while (true) {
    x = x++;
    System.out.println(x);
  }
}

7 个回复

倒序浏览
先看看while语句的语法结构:
while(条件表达式)
{
      执行语句;
}
当条件表达式返回值为真时,才执行{}中的代码,当执行完{}中的代码后,再检测到条件表达式的返回值,直到返回值为假时终止循环。
此例中,没有条件表达式,没有给定范围,只有一个true,所以只能一直的循环下去!
回复 使用道具 举报

//java 这样写,打印的全是5 不明白?谁能告诉我
public static void main(String[] args) {
  int x = 5;
  while (true) {
    x = x++;//你在这里如果写成x=++x那就一直往上累加
    System.out.println(x);
  }
}
如果写成x=++x那就一直往上累加,而且不会终止。
回复 使用道具 举报
本帖最后由 李南江 于 2012-3-19 15:19 编辑

你写的是一个无限循环 重点在于x++赋值问题 无限循环 x++ (++在后赋值给x再自增),故一直是5,
如果你把++放到x前面数值就会变化了(++x 先自增再赋值)。
public static void main(String[] args) {
  int x = 5;
  while (true) {
    x=++x;
    System.out.println(x);
  }
}

首先你要了解运算符的(张老师的JAVA就业培训教程44页)
回复 使用道具 举报
x++的意思是用完之后再加1;你写x=x++;等于是每次都把5付给本次的x后;再把上一次的x加1;但输出的还是本次的x,还是5;
你应该把x=x++;改为x++;
回复 使用道具 举报
首先你要把x=x++;改为x++;这样就不一直是5了,会向上累加,然后你求什么,要定义一个为ture的的条件,当x++不在条件之内的话就会停止,否则是一个无限循环。
回复 使用道具 举报
周建 发表于 2012-3-19 15:19
x++的意思是用完之后再加1;你写x=x++;等于是每次都把5付给本次的x后;再把上一次的x加1;但输出的还是本次 ...

就是这个意思,x=x++,先执行的是赋值操作,可以这样理解 x=x++等价于
temp=x;  x=x+1;   x=temp;
回复 使用道具 举报
x++与++x.关于运算符的思考。应该注意细节。x++是先赋值给x,x自身再加1;++x是先加1再将这个值赋值给自己。细微的艺术。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马