黑马程序员技术交流社区

标题: while循环的简单问题 [打印本页]

作者: 阿苏勒    时间: 2014-6-10 23:24
标题: while循环的简单问题
  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?
作者: sanjiadiankeli    时间: 2014-6-10 23:27
你下面的输出语句自动为循环体的
作者: love~陌    时间: 2014-6-10 23:52
看到sanjiadiankel这个哥们的回答我乐了,民间高手好多~~~

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

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

少侠,还有疑问么
作者: 附耳细说    时间: 2014-6-11 03:38
类似于
while(true);//是个死循环
while(++i < --j); 等价于 while(++i < --j){};  
作者: 姿_`态    时间: 2014-6-11 07:24
本帖最后由 姿_`态 于 2014-6-11 07:29 编辑

哦哦 ,原来如此,当while语句后面有分号的时候,下一条语句默认为循环语句。
作者: 黎志勇    时间: 2014-6-11 07:46
姿_`态 发表于 2014-6-11 07:24
哦哦 ,原来如此,当while语句后面有分号的时候,下一条语句默认为循环语句。 ...

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

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

  3. }
复制代码

作者: 姿_`态    时间: 2014-6-11 07:51
黎志勇 发表于 2014-6-11 07:46
你理解错了吧,当while语句后面有分号的时候,循环的是空语句{},跟下一句没啥关系。
一般来说while循环 ...

好吧 ,是我理解错了 ,现在明白了 谢谢
作者: 黎志勇    时间: 2014-6-11 07:54
姿_`态 发表于 2014-6-11 07:51
好吧 ,是我理解错了 ,现在明白了 谢谢

所以,写if、while等,你的操作哪怕只有一句,也最好用{}括上,这是个好习惯。
作者: 姿_`态    时间: 2014-6-11 07:55
黎志勇 发表于 2014-6-11 07:54
所以,写if、while等,你的操作哪怕只有一句,也最好用{}括上,这是个好习惯。 ...

确实是啊,看似简单 ,都是经常容易出错误的地方
作者: sun_jun    时间: 2014-6-11 21:29
while循环直到执行的i=150,j=150;然后i<j不满足,退出循环,i和j的直都发生变化,都变味150,
作者: 小生    时间: 2014-6-12 13:29
  while(++i < --j);这一句其实在i=149时,j=151时就已经不满足了,因为150<150不成立,此时++i执行完,i=150。所以打印的i就是150,而不是楼上说的当i=150时停止循环的。
作者: 18353666072    时间: 2014-6-12 14:51
学习了啊




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