You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在for循环增减量块中编写条件判断控制多变量迭代?

解答

你想在for循环的增量/减量块中直接编写条件逻辑的思路完全可行,用三元表达式实现的写法本身符合Java语法规范,只是你给出的示例代码里循环终止条件写错了。
原代码里的终止条件left < height存在类型不匹配问题:height是int数组,left是数组下标,双指针场景下正确的终止条件应该是left < right,也就是左右指针相遇时结束循环。修正后可以直接运行的代码如下:

for (int left = 0, right = height.length - 1;
     left < right;
     height[left] < height[right] ? left++ : right--) {
    // 此处编写循环内的业务逻辑
}

补充说明

  • Java语法没有强制要求for循环的第三个更新块必须写单一的自增/自减操作,只要是合法的语句表达式都能正常执行。
  • 上面这段代码里三元表达式的执行逻辑完全符合你的预期:每次循环迭代跑完后,判断height[left]和height[right]的大小,条件成立就自增left,不成立就自减right,和你把条件判断挪到循环体内的写法,运行效果、执行效率没有任何区别。
  • 这种写法是接雨水、盛最多水的容器等双指针算法题的常见简写形式,如果团队编码规范要求循环更新逻辑必须直白易懂,再把判断逻辑移到循环体里就行。

内容的提问来源于stack exchange,提问作者Khatevate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 11:57:13