作者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