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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王勇文 中级黑马   /  2013-2-1 20:00  /  2011 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 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执行后的内容

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

7 个回复

倒序浏览
while是先判断再执行,do while是先执行再判断,,,还有程序是从上向下执行啊。while完了后再来看do ..while的!

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

回复 使用道具 举报
本帖最后由 赵晓东 于 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, 下载次数: 42)

QQ截图20130201204307.png

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
有什么问题?
打印x = 2后,x++,x = 3的时候跳出了while,进入do-while的时候 x 是3,所以输出是do: x=3。

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

回复 使用道具 举报
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.   

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

回复 使用道具 举报
不是完全正常么?
你想表达的意思是为什么do while没从0开始?
while的循环完毕后,就跟while循环无关了呀,这时候x是3
那么do while里面,同样循环两次,不是正常么
回复 使用道具 举报

本帖最后由 赵晓东 于 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:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马