作者WeiMyWoW (...)
看板java
标题[问题] 研究了好久,还是不了它为何变成这结果
时间Sun Aug 19 17:35:51 2012
不好意思,可能是个蠢问题,但还是想发问,以後才会了解
Class就不附上了,count值也为0
Echo e1 = new Echo();
Echo e2 = new Echo();
int x = 0 ;
while (x < 4){
e1.hello();
System.out.println("x: "+ x + " e1: " + e1.count + " e2: " + e2.count);
e1.count=e1.count +1;
if (x==3) {
e2.count = e2.count +1;
}
if (x>0){
e2.count = e2.count + e1.count;
}
x = x+1;
}
System.out.println("x: "+ x + " e1: " + e1.count + " e2: " + e2.count);
}
追踪数字结果
x: 0 e1: 0 e2: 0
x: 1 e1: 1 e2: 0 「X>0时 e2 = e2+e1 ,那这边e2不是应该为1?」
x: 2 e1: 2 e2: 2 「我也想过,可能上一个结果还未侦测到所以e2还是为0,X>0这条件
才是从这边开始,所以e2=e2+e1 =2 这边还算可以理解..」
x: 3 e1: 3 e2: 5 「当x=3时e2+1,上个结果是e2=4 所以变成5,可以理解」
x: 4 e1: 4 e2: 10 「为何e2突然变成10无法理解这边怎麽算出....」
小弟弄不清楚e2的结果变化,研究的好乱啊,谁可以为小弟我弄清楚这疑惑...未来就
懂怎麽看了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.36.171.189
1F:推 mars90226:这个是...Head First Java? 08/19 17:39
2F:→ WeiMyWoW:回楼上,是的..Head First Java的范例题目 08/19 17:40
3F:推 mars90226:第二次的x才大於0,所以e2:0是对的 08/19 17:43
4F:→ mars90226:第三次,e1从3变成4,e2从5变成6,然後e2又等於e1+e2 08/19 17:45
5F:→ mars90226:更正: x=3时 //推文限制好麻烦,一推错就... 08/19 17:47
非常谢谢Mars大大的解答,推文限制真的满麻烦,辛苦您了,差不多了解了
x: 0 e1: 0 e2: 0
x: 1 e1: 1 e2: 0
x: 2 e1: 2 e2: 2 「我原本这边理解的是 e2=e2+e1=4 ,x=3时 e2+1 ,所以下方变5,
x: 3 e1: 3 e2: 5 ←但我想错了,应该是这边e2=e2+e1=5 (2+3)且刚好条件为x=3变成6
x: 4 e1: 4 e2: 10 「所以这样就通了,上方e2为6,再来这里e2+e1就等於10了!
希望我这样没理解错误!
※ 编辑: WeiMyWoW 来自: 114.36.171.189 (08/19 17:52)
6F:推 mars90226:没错~ 08/19 17:56
7F:→ johnhao1206:建议可以缩排一下 08/19 18:15
8F:推 LPH66:你不要把while回圈当做一次一起执行 因为它是依序执行的 08/19 18:26
9F:→ LPH66:x==3的条件判断完e2改了之後才再判断x>0再计算的 08/19 18:27
10F:推 LPH66:用这个概念再下去追踪一次程式就会比较了解之前卡死在哪里了 08/19 18:30