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

为何Java程序输出1 1 2 2 3 3而非1 1 2 2 3 1?整数除法疑问

为什么你的Java程序输出是1 1 2 2 3 3而不是1 1 2 2 3 1?

首先先把你的代码贴出来,方便咱们一步步分析:

class Scratch { 
    public static void main(String[] args) { 
        int[] a = { 1, 2, 3, 4, 5, 3 }; 
        for (int i = 0; i < 6; i++) 
            System.out.print(a[i / 2] + " "); 
    } 
}

你提到的“Java中整数除法3/2会取整数部分1”这点完全正确,但问题出在循环每一次i取值对应的i/2结果上,咱们逐个拆解6次循环的执行过程:

  • 当i=0时:0/2=0 → 取数组a[0],值为1
  • 当i=1时:1/2=0 → 取数组a[0],值为1
  • 当i=2时:2/2=1 → 取数组a[1],值为2
  • 当i=3时:3/2=1 → 取数组a[1],值为2
  • 当i=4时:4/2=2 → 取数组a[2],值为3
  • 当i=5时:5/2=2 → 取数组a[2],值为3

看出来了吧?最后一次循环i=5时,5/2的整数除法结果是2(5除以2商2余1,整数除法只取商的整数部分),对应的数组元素是a[2]=3,而非你预期的1。你预期的最后一个1可能是误以为最后一次访问的是数组的其他索引(比如是不是把i/2错当成了i%2?或者混淆了数组元素的位置?),但按照当前代码逻辑,每两次循环会取数组里同一个位置的元素:前两次取a[0],中间两次取a[1],最后两次取a[2],所以输出自然是1 1 2 2 3 3啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:48:05