Java for循环代码输出不符:为何实际结果与预期不同?
问题分析:for循环执行逻辑导致的输出差异
代码示例
import java.util.*; public class demo{ public static void main(String args[]){ Scanner sc=new Scanner(System.in); for(int i=0;i<5;i++){ System.out.println(i); i=i+2; } } }
预期输出
0 2 4
实际输出
0 3
原因解释
问题核心在于Java for循环的固定执行流程,它严格按以下步骤运行:
- 初始化:执行
int i=0,仅在循环启动时执行一次。 - 条件校验:判断
i<5是否为真,为真则进入循环体。 - 执行循环体:运行循环内的代码(打印
i、执行i=i+2)。 - 增量操作:执行
for循环头里的i++,然后回到步骤2重新校验条件。
我们逐次拆解循环过程:
- 第一次循环:
- 初始化
i=0,0<5成立,进入循环体。 - 打印0后,
i=i+2使i变为2。 - 执行
i++,i最终变为3。
- 初始化
- 第二次循环:
- 3<5成立,进入循环体。
- 打印3后,
i=i+2使i变为5。 - 执行
i++,i最终变为6。
- 第三次循环:
- 6<5不成立,循环直接终止。
你预期的输出忽略了for循环自带的i++增量操作——每次循环体执行完毕后,i都会被额外加1。如果要得到预期的输出,可修改循环的增量表达式,去掉循环体内对i的手动修改:
for(int i=0;i<5;i=i+2){ System.out.println(i); }
内容的提问来源于stack exchange,提问作者MUKUL NAGPAL
相关产品推荐
相关产品推荐

