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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 阿苏勒 中级黑马   /  2014-6-10 23:24  /  1203 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class  Demo1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int i=100,j=200;
  6.                 while(++i < --j);
  7.                 System.out.println("Midpoint "+i);
  8.         }
  9. }
复制代码

while循环没有循环体,为什么最后打印的i值为150?

11 个回复

倒序浏览
sanjiadiankeli 来自手机 中级黑马 2014-6-10 23:27:04
沙发
你下面的输出语句自动为循环体的
回复 使用道具 举报
看到sanjiadiankel这个哥们的回答我乐了,民间高手好多~~~

while会一直循环到条件不满足,不满足的时候,i的值就是150,
话说到这里,++i孰先孰后就不必说了吧。

最后输出语句就是i的最后的值,必须是150

少侠,还有疑问么
回复 使用道具 举报
类似于
while(true);//是个死循环
while(++i < --j); 等价于 while(++i < --j){};  
回复 使用道具 举报
本帖最后由 姿_`态 于 2014-6-11 07:29 编辑

哦哦 ,原来如此,当while语句后面有分号的时候,下一条语句默认为循环语句。
回复 使用道具 举报
姿_`态 发表于 2014-6-11 07:24
哦哦 ,原来如此,当while语句后面有分号的时候,下一条语句默认为循环语句。 ...

你理解错了吧,当while语句后面有分号的时候,循环的是空语句{},跟下一句没啥关系。
一般来说while循环就是干下面的事
  1. while(条件)
  2. {
  3.     循环操作;
  4. }
复制代码

while后面直接分号,就等同
  1. while(条件)
  2. {

  3. }
复制代码
回复 使用道具 举报
黎志勇 发表于 2014-6-11 07:46
你理解错了吧,当while语句后面有分号的时候,循环的是空语句{},跟下一句没啥关系。
一般来说while循环 ...

好吧 ,是我理解错了 ,现在明白了 谢谢
回复 使用道具 举报
姿_`态 发表于 2014-6-11 07:51
好吧 ,是我理解错了 ,现在明白了 谢谢

所以,写if、while等,你的操作哪怕只有一句,也最好用{}括上,这是个好习惯。
回复 使用道具 举报
黎志勇 发表于 2014-6-11 07:54
所以,写if、while等,你的操作哪怕只有一句,也最好用{}括上,这是个好习惯。 ...

确实是啊,看似简单 ,都是经常容易出错误的地方
回复 使用道具 举报
while循环直到执行的i=150,j=150;然后i<j不满足,退出循环,i和j的直都发生变化,都变味150,
回复 使用道具 举报
  while(++i < --j);这一句其实在i=149时,j=151时就已经不满足了,因为150<150不成立,此时++i执行完,i=150。所以打印的i就是150,而不是楼上说的当i=150时停止循环的。
回复 使用道具 举报
学习了啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马