You need to enable JavaScript to run this app. 咨询下述Java程序的运行逻辑 为何程序输出为2、3、4
优惠活动
大模型
产品
解决方案
定价
更多

咨询下述Java程序的运行逻辑 为何程序输出为2、3、4

代码执行逻辑与输出形成原理

首先明确程序初始的数组结构,逐索引对应值如下:

数组 my_array 索引-值映射:
索引:0  1  2  3  4  5  6  7  8  9
对应值:1  2  3  4  5  6  7  2  3  4

循环规则说明

程序采用两层嵌套循环做数组遍历,核心运行规则如下:

  • 外层循环固定当前对比基准的位置i,遍历范围是0到数组倒数第二个位置(循环条件为i < my_array.length-1,数组长度为10,因此i的取值为0、1、2...8)
  • 内层循环在固定基准i后,从i的下一个位置j = i+1开始,一路遍历到数组最后一位(索引9)
  • 触发打印的判断逻辑:当i位置的值与j位置的值相等时,打印j位置的值。代码中额外写的i != j判断属于冗余逻辑,因为内层j的起始值就是i+1,整个遍历过程中j永远大于i,两个索引不可能相等,该判断不影响运行结果。另外开头导入的java.util.Arrays包未在代码中实际使用,不影响程序执行。

逐轮遍历的打印触发过程

按循环顺序逐次拆解执行流程,对应输出的生成节点如下:

  1. i=0轮次:i位置对应数组值为1,内层j依次遍历1到9的位置,对应值为2、3、4、5、6、7、2、3、4,没有和1相等的元素,本轮无打印输出。
  2. i=1轮次:i位置对应数组值为2,内层j从索引2开始向后遍历:
    • j取2(值3)、3(值4)、4(值5)、5(值6)、6(值7)时,对应值均和2不相等,不触发打印
    • 走到j=7位置时,对应值为2,和i位置的基准值相等,满足打印条件,输出第一行内容2
    • 继续遍历j=8(值3)、j=9(值4),无匹配值,本轮循环结束。
  3. i=2轮次:i位置对应数组值为3,内层j从索引3开始向后遍历:
    • j取3(值4)、4(值5)、5(值6)、6(值7)、7(值2)时,对应值均和3不相等,不触发打印
    • 走到j=8位置时,对应值为3,和i位置的基准值相等,满足打印条件,输出第二行内容3
    • 继续遍历j=9(值4),无匹配值,本轮循环结束。
  4. i=3轮次:i位置对应数组值为4,内层j从索引4开始向后遍历:
    • j取4(值5)、5(值6)、6(值7)、7(值2)、8(值3)时,对应值均和4不相等,不触发打印
    • 走到j=9位置时,对应值为4,和i位置的基准值相等,满足打印条件,输出第三行内容4
    • 本轮遍历结束。
  5. 剩余i=4到i=8的轮次:i位置对应的数组值分别为5、6、7、2、3,向后遍历的剩余位置中没有和这些值相等的元素,全程不会触发打印。

结果本质总结

整个程序的核心逻辑是遍历数组中的重复元素,固定每个元素第一次出现的位置为对比基准,当后续遍历到相同值的元素时,直接打印该重复元素的值。在示例数组中,2、3、4三个值都分别在数组中出现了两次,因此刚好依次打印这三个值的第二次出现值,最终形成2、3、4的三行控制台输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 17:45:04