黑马程序员技术交流社区

标题: 这个问题百思不解 [打印本页]

作者: dragonsoull    时间: 2015-8-7 10:52
标题: 这个问题百思不解
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 始终是零??
作者: boboyuwu    时间: 2015-8-7 10:55
你真是我的哥  你执行了20次for循环每次都将x初始化为0然后执行了20次x=0++%2 也就是x=0%2,你觉得这答案等于几
作者: 冲吧,小怪兽    时间: 2015-8-7 11:37
因为你变量x初始化是在for循环内部,不管你做任何运算你最终结果都是0
作者: 段燚涛    时间: 2015-8-7 11:49
亲,你错了,把x的定义(int x =0)这句放到for循环前面去。这是变量的作用域的问题!!
作者: Clouddd    时间: 2015-8-7 12:00
同意楼上的说法,那我就一步一步说给你听啦~
首先进入循环给x赋值为0
然后是x = (x++)%2;
这里等号右边x先对2取余,结果是为0,这时候x再自加一,然后再用0给x赋值
过程等于{
x = 0%2;
x ++;
x = 0;
所以最后x还是为0
}
然后问题来了!!!
继续循环,你又 int x = 0;等于重新定义了一遍x,所以会不断重复上面我说的步骤。。
希望对你有用~最后祝学习愉快
作者: kingxiao    时间: 2015-8-7 12:47
X每次都是从0开始好吧 ,把X放到FOR循环外就好了
作者: 小丑    时间: 2015-8-7 12:58
把x这个变量定义在for循环外面看看呢。。。。。。。
作者: wang949055945    时间: 2015-8-7 16:26
把int x =0;放在for循环的外面就可以了
作者: yongaidongbing    时间: 2015-8-7 16:29
。。。。。。。。。。。。。。。。
作者: kenfans    时间: 2015-8-7 16:40
其实我还以为会出现1的,不过for里面每次都初始化,也有点
作者: godboy001    时间: 2015-8-7 18:52
哈哈哈,百思不得其解.....
作者: dragonsoull    时间: 2015-8-7 18:59
boboyuwu 发表于 2015-8-7 10:55
你真是我的哥  你执行了20次for循环每次都将x初始化为0然后执行了20次x=0++%2 也就是x=0%2,你觉得这答案等 ...

- -!    晕了!!!!自己居然没发现!!!
作者: 陈化身1    时间: 2015-8-7 21:19
你这x和i一点关系都没有
作者: 高山高水高小波    时间: 2015-8-7 21:29
for循环有没有都一个样啊
作者: CharnLau    时间: 2015-8-7 22:30
每次循环都给x赋值成0- -!
作者: zhaoyue    时间: 2015-8-7 22:36
。。。。。。。。。。。。。。。




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