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到死

你可能感兴趣的:(笔记,java)