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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

dragonsoull

中级黑马

  • 黑马币:11

  • 帖子:68

  • 精华:0

© dragonsoull 中级黑马   /  2015-8-7 10:52  /  423 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class  Test2
{
        public static void main(String[] args)
        {
                for(int i=0;i<20;i++){
                        int x = 0;
                        x = (x++)%2;
                        System.out.println(x);
                }
        }
}

为什么打印出来的x 始终是零??

15 个回复

倒序浏览
你真是我的哥  你执行了20次for循环每次都将x初始化为0然后执行了20次x=0++%2 也就是x=0%2,你觉得这答案等于几
回复 使用道具 举报
因为你变量x初始化是在for循环内部,不管你做任何运算你最终结果都是0
回复 使用道具 举报
亲,你错了,把x的定义(int x =0)这句放到for循环前面去。这是变量的作用域的问题!!
回复 使用道具 举报
同意楼上的说法,那我就一步一步说给你听啦~
首先进入循环给x赋值为0
然后是x = (x++)%2;
这里等号右边x先对2取余,结果是为0,这时候x再自加一,然后再用0给x赋值
过程等于{
x = 0%2;
x ++;
x = 0;
所以最后x还是为0
}
然后问题来了!!!
继续循环,你又 int x = 0;等于重新定义了一遍x,所以会不断重复上面我说的步骤。。
希望对你有用~最后祝学习愉快
回复 使用道具 举报
X每次都是从0开始好吧 ,把X放到FOR循环外就好了
回复 使用道具 举报
把x这个变量定义在for循环外面看看呢。。。。。。。
回复 使用道具 举报
wang949055945 来自手机 中级黑马 2015-8-7 16:26:06
8#
把int x =0;放在for循环的外面就可以了
回复 使用道具 举报
。。。。。。。。。。。。。。。。
回复 使用道具 举报
其实我还以为会出现1的,不过for里面每次都初始化,也有点
回复 使用道具 举报
哈哈哈,百思不得其解.....
回复 使用道具 举报
boboyuwu 发表于 2015-8-7 10:55
你真是我的哥  你执行了20次for循环每次都将x初始化为0然后执行了20次x=0++%2 也就是x=0%2,你觉得这答案等 ...

- -!    晕了!!!!自己居然没发现!!!
回复 使用道具 举报
你这x和i一点关系都没有
回复 使用道具 举报
for循环有没有都一个样啊
回复 使用道具 举报
每次循环都给x赋值成0- -!
回复 使用道具 举报
。。。。。。。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马