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

Java中Break与Continue用法疑问:代码位置对执行结果的影响

Java循环执行逻辑疑问解答

1. 第一段while循环为何没有输出2?

先看这段代码的结构:

int i=0;
while(i<5){
    System.out.println(i);
    System.out.println("Java is great.");
    if (i==2){
        System.out.println("Ending the Loop.");
        break;
    }
    i++;
}

逐次跟踪执行流程:

  • 初始i=0:0<5成立,进入循环,打印0和Java is great.,i≠2,执行i++,i变为1。
  • i=1:1<5成立,进入循环,打印1和Java is great.,i≠2,执行i++,i变为2。
  • i=2:2<5成立,进入循环,先打印2和Java is great.,然后触发if(i==2),打印Ending the Loop.并break跳出循环。

按照代码逻辑,2应该会被打印。如果你的输出里没有2,大概率是代码位置写错了——比如把i++放在了if判断之前,这样当i=1时,执行i++变为2后直接触发break,跳过了i=2的打印步骤。

2. 最后一段do-while循环为何输出5?

对应代码:

int i=0;
do{
    i++;
    if(i==2){
        System.out.println("Ending the loop.");
        continue;
    }
    System.out.println(i);
    System.out.println("Java is Great.");
}while(i<5);

do-while循环的核心是先执行循环体,再检查条件,逐次跟踪:

  • 初始i=0:进入do块,i++变为1,i≠2,打印1和Java is Great.,检查1<5成立,继续循环。
  • i=1:进入do块,i++变为2,触发if,打印Ending the loop.,continue跳转到条件检查,2<5成立,继续循环。
  • i=2:进入do块,i++变为3,i≠2,打印3和Java is Great.,3<5成立,继续循环。
  • i=3:进入do块,i++变为4,打印4和Java is Great.,4<5成立,继续循环。
  • i=4:进入do块,i++变为5,i≠2,打印5和Java is Great.,然后检查5<5不成立,循环结束。

正是因为do-while先执行循环体再判断条件,当i=4时条件成立,进入循环体后i被递增到5,此时已经执行了打印逻辑,之后才判断条件不满足退出,所以会输出5。

如何确定i++的位置以得到预期结果?

核心是拆解循环的执行顺序,逐步骤跟踪变量变化:

  • while/for循环:遵循「条件检查 → 循环体执行(含分支、i++等操作) → 下一次条件检查」的顺序。i++在循环体开头会先改变i值再执行逻辑;在末尾则先使用当前i值再改变。
  • do-while循环:遵循「循环体执行 → 条件检查」的顺序,无论条件是否满足,循环体至少执行一次。i++的位置直接影响每次循环体中使用的i值,甚至会出现最后一次循环体执行时i值超出条件范围的情况(比如上面的5)。

写代码时,先在纸上或脑子里走一遍前3-4次循环的流程,确认每一步的i值和输出内容,就能避免逻辑偏差。

内容的提问来源于stack exchange,提问作者Om Kumar Rath

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:01:02