黑马程序员技术交流社区

标题: 关于 while与do while结合出现的小问题 [打印本页]

作者: 王勇文    时间: 2013-2-1 20:00
标题: 关于 while与do while结合出现的小问题
本帖最后由 张向辉 于 2013-2-3 12:06 编辑
  1. //====================================

  2. public static void main(String[] args) {
  3. int x=1;
  4. while(x<3){
  5. System.out.println("x="+x);
  6. x++;
  7. }

  8. do{
  9. System.out.println("do: x="+x);
  10. x++;
  11. }while(x<5);

  12. }

  13. }
  14. /* 为什么前面while执行后,do while 不执行前面的内容呢? 直接打印X++后的内容。
  15. */
复制代码
在做习题的时候发现很奇怪的问题, 没弄懂。   do  while 累加while执行后的内容

作者: 王溢君    时间: 2013-2-1 20:04
while是先判断再执行,do while是先执行再判断,,,还有程序是从上向下执行啊。while完了后再来看do ..while的!
作者: 赵晓东    时间: 2013-2-1 20:38
本帖最后由 赵晓东 于 2013-2-1 20:41 编辑
  1. //====================================
  2. class Test1
  3. {
  4.         public static void main(String[] args) {
  5. int x=1;        //这里定义了x变量 x=1
  6. while(x<3){
  7. System.out.println("x="+x); //循环输出 x = 1,x = 2,然后x = 3不满足条件 跳出循环,记住这里的x = 3
  8. x++;
  9. }

  10. do{
  11. System.out.println("do: x="+x);// 输出 x = 3, x = 4, 当x = 5时不满足while的条件,跳出循环
  12. x++; //继续累加
  13. }while(x<5);

  14. }
  15. }
  16. /* 为什么前面while执行后,do while 不执行前面的内容呢? 直接打印X++后的内容。
  17. */
复制代码

QQ截图20130201204307.png (1.15 KB, 下载次数: 53)

QQ截图20130201204307.png

作者: 王昕    时间: 2013-2-1 20:40
有什么问题?
打印x = 2后,x++,x = 3的时候跳出了while,进入do-while的时候 x 是3,所以输出是do: x=3。
作者: 折纸时代    时间: 2013-2-1 21:48
x++ 的结果是 自加后依然是原值, 但是在进行判断时,x 就是加1后的值了.
所以 第一个while循环 输出 1 , 2  . 然后x= 3 时,不满足条件.跳出循环.
do while 中, 是先打印x .  因为上面是x++ 后
再去判断的,所以其值为3 也就是为什么上面循环不满足条件的原因.
所以先do 打印的是3 . 然后自加. 判断时值为4 . 继续自加,判断时值为5 ,不满足条件, 结束循环.
所以while循环输出值 为 1, 2.
do while 输出值为3 , 4

例如 int  x = 1;
x ++ ; // 现在x值为1
if (x > 3) //  运算时,x值为2.   
作者: 杨浩    时间: 2013-2-1 22:07
不是完全正常么?
你想表达的意思是为什么do while没从0开始?
while的循环完毕后,就跟while循环无关了呀,这时候x是3
那么do while里面,同样循环两次,不是正常么
作者: 铿锵科技    时间: 2013-2-1 22:35

本帖最后由 赵晓东 于 2013-2-1 20:41 编辑

//====================================
class Test1
{
        public static void main(String[] args) {
int x=1;        //这里定义了x变量 x=1
while(x<3){
System.out.println("x="+x); //循环输出 x = 1,x = 2,然后x = 3不满足条件 跳出循环,记住这里的x = 3
x++;
}

do{
System.out.println("do: x="+x);// 输出 x = 3, x = 4, 当x = 5时不满足while的条件,跳出循环
x++; //继续累加
}while(x<5);

}
}
/* 为什么前面while执行后,do while 不执行前面的内容呢? 直接打印X++后的内容。
*/
复制代码
QQ截图20130201204307.png (1.15 KB, 下载次数: 0)

楼上这位人兄答得很好,但只有5技术分,提问的楼主居然有17分了{:soso_e127:}





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