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

11 篇文章 0 订阅

今天敲代码的时候被基础给击倒了(难受

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值