Java基本功之i++、i--、++i、--i

今天敲代碼的時候被基礎給擊倒了(難受

    while (i < j) {
            res = height[j] > height[i] ?
                    Math.max(res,  height[i++] * (j - i)):
                    Math.max(res,  height[j++] * (j - i));
    }

上面是我寫的代碼節選,但是這個地方的計算結果總是出錯。搞得我非常鬱悶。。。

我苦思冥想覺得代碼沒問題啊!錯出在哪呢?

最後發現就出在這個j++、i++。。。

原本我的預想是在while循環中使i和j各自自增,結果我忽略了j++和i++並不是循環之後才生效。。。它立馬就生效了,而且是同一行代碼。。。

也就是說假設j=4

那麼按照我的代碼,height[j++] 就等價於 height[4]

但是隨後的 (j - i)就變成了 (5 - i)。。。(天吶,我居然犯了這種錯誤

與其類似的還有--i和--j。。。假設j = 4;

那麼height[--j] 就等價於 height[3]。。。(基礎還是得打牢啊,不然debug到死

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章