[問題] 研究了好久,還是不了它為何變成這結果

看板java作者 (...)時間13年前 (2012/08/19 17:35), 編輯推噓5(505)
留言10則, 4人參與, 最新討論串1/1
不好意思,可能是個蠢問題,但還是想發問,以後才會了解 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

08/19 17:39, , 1F
這個是...Head First Java?
08/19 17:39, 1F

08/19 17:40, , 2F
回樓上,是的..Head First Java的範例題目
08/19 17:40, 2F

08/19 17:43, , 3F
第二次的x才大於0,所以e2:0是對的
08/19 17:43, 3F

08/19 17:45, , 4F
第三次,e1從3變成4,e2從5變成6,然後e2又等於e1+e2
08/19 17:45, 4F

08/19 17:47, , 5F
更正: x=3時 //推文限制好麻煩,一推錯就...
08/19 17:47, 5F
非常謝謝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)

08/19 17:56, , 6F
沒錯~
08/19 17:56, 6F

08/19 18:15, , 7F
建議可以縮排一下
08/19 18:15, 7F

08/19 18:26, , 8F
你不要把while迴圈當做一次一起執行 因為它是依序執行的
08/19 18:26, 8F

08/19 18:27, , 9F
x==3的條件判斷完e2改了之後才再判斷x>0再計算的
08/19 18:27, 9F

08/19 18:30, , 10F
用這個概念再下去追蹤一次程式就會比較了解之前卡死在哪裡了
08/19 18:30, 10F
文章代碼(AID): #1GCBDwE6 (java)