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

为何标准for循环中的条件布尔值未按预期工作?

为什么for循环条件直接用i>1&&i<4时无法执行?

嘿,这个问题的核心其实是你没搞清楚Java中for循环的执行逻辑!咱们一步步拆解来看:

首先得明确for循环的执行流程:

  1. 先执行初始化语句(也就是int i=0这一步)
  2. 立刻判断条件表达式的真假,如果是false,直接跳过整个循环,连循环体都不会进
  3. 如果条件是true,执行循环体里的代码
  4. 执行完循环体,再执行递增/递减语句(i++)
  5. 回到第二步,重新判断条件,直到条件为false才终止循环

现在看你的第一段代码:

int[]weather = {1,2,3,4,5,6,7};
for(int i=0;i>1&&i<4; i++ ) {
    System.out.println("Weather is ===> "+weather[i]);
}

初始化后i=0,然后判断i>1&&i<4——0>1是false,整个逻辑表达式结果就是false,所以循环直接终止了,根本没机会进入循环体执行打印代码,自然就没输出啦。

而第二段代码的逻辑是:

int[]weather = {1,2,3,4,5,6,7};
for(int i=0;i<10; i++ ) {
    if(i>1&&i<4) {
        System.out.println("Weather is ===> "+weather[i]);
    }
}

这里for循环的条件是i<10,初始化i=0时条件为true,所以能进入循环体。之后每次循环都会先判断i是否在2到3的范围内(也就是i>1&&i<4),符合条件才打印,所以能正常输出目标元素。

其实如果只想遍历索引2和3,更高效的写法是直接把for循环的初始化和条件改成:

int[]weather = {1,2,3,4,5,6,7};
for(int i=2; i<4; i++ ) {
    System.out.println("Weather is ===> "+weather[i]);
}

这样一开始就把i设为2,循环到i=4时终止,直接遍历目标索引,不用额外的if判断~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 10:32:29