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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵嘉男 中级黑马   /  2012-5-20 17:35  /  2612 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

        }

}
结果:
x=1
x=2
x=3
4
最后一个结果x怎么等于4呢,都出了大括号了,为什么不是1呢,

点评

成员变量作用域是类的大括号  发表于 2012-5-20 23:31

11 个回复

正序浏览
  public static void main(String[] args) {
                int x = 1;
                while(x<=3)
                {
                        System.out.println("x="+x);
                        x++;
                }
                System.out.println(x);

        }

}
当while  执行玩后    x++;   x的值3  在加1   
在最后输出时:4   (3+1)
回复 使用道具 举报
本帖最后由 我能驾驭住 于 2012-5-21 08:50 编辑

public static void main(String[] args) {
                int x = 1;
                while(x<=3)//它的意思是当x<=3的时候执行大括号里面的语句
                {
                        System.out.println("x="+x);//这肯定是执行打印三次 分别是x=1,x=2,x=3 对吧;没有疑问是吧!
                        x++;//执行到x=3的时候,执行这个语句,x的值是不是自动+1,就变成x=4了是吧,然后返回到whille语句
                    再进行判断,如果满足条件再执行循环体,不满足条件退出循环!很显然4大于3,则退出,但这
                    时候, x的值是4!所以x=4的时候退出了.....向下执行......
                }
                System.out.println(x);//循环退出后,执行到这一条语句,所以这里打印取x=4的值!

        }

}

注:while语句是,直到条件不满足才退出循环体!
回复 使用道具 举报
这个x在main函数内 所做的一切对x的变化都有效 除非在main函数括号外
回复 使用道具 举报
彩虹 中级黑马 2012-5-21 00:08:30
9#
分析:一开始X=1,循环开始,满足条件打印出x=1;接下来x++,x变为2
                  x=2,满足条件,打印出x=2;x++,x变为3
                  x=3,满足条件,打印出x=3;x++,x变为4
                  x=4,不满足循环条件,跳出循环
循环是跳出来了,但x此刻等于4,所以打印出了4         
            
回复 使用道具 举报
hongbo 初级黑马 2012-5-20 23:06:10
8#
x=3时,while判断x=3,做一次循环,循环中有个x++,所以x此时为4.
回复 使用道具 举报
程旦 中级黑马 2012-5-20 22:56:53
7#
首先x在整个main函数里  最后一次循环x++后 x变成4  正因为此时x=4了 所以才跳出循环了
回复 使用道具 举报
x作用与整个main
回复 使用道具 举报
楼主注意:你忘记了变量的定义。

int x=1;  -----------------中的 X是变量,而这个变量作用的范围是整个函数(方法)。这点你要明白。

while(){}后,-----------------------x是4了,这点解释下。当最后一次循环后打印是X=3,但是后面还有句X++;所以X最后出循环的时候是4了,这点要清楚。

然后你的疑问是int x=1; 作用整个函数(方法),为什么X不是继续是1,而是循环结束后的4难????

------------------------------楼主,所谓变量,就是在不停变化的量啊,都变成了4了,你怎么还要求他是1难?

--------------------------------int x=1; ----只是对变量x初始化(也就是一开始的值),但是可以随时更改的啊,这才是变量啊!!

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
当你x=3的时候 还满足条件,他会继续执行循环体,执行完了s.o.p后 ,还有个x++,又完成了一次自增,这时候x=4.又返回while循环,判断x不满足小于等于3,直接跳到最后的输出语句,结果当然是4.

评分

参与人数 1黑马币 +10 收起 理由
赵嘉男 + 10 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 杨尧 于 2012-5-20 17:55 编辑

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

  9.         }

  10. }
  11. 结果:
  12. x=1
  13. x=2
  14. x=3
  15. 4
  16. 最后一个结果x怎么等于4呢,都出了大括号了,为什么不是1呢,

  17. //因为你x自增了,++是给x自增的,x的作用于是main函数里,你一共自增了3次,所以最后打印是4
复制代码

评分

参与人数 1黑马币 +10 收起 理由
赵嘉男 + 10 赞一个!

查看全部评分

回复 使用道具 举报
你的X的作用域是整个main函数    在循环里加了   后面肯定也是加了的值啊

评分

参与人数 1黑马币 +10 收起 理由
赵嘉男 + 10 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马