为什么输出1 1 2 2 3 3不是1 1 2 2 3 1整数除法

时间:2018-04-18 17:15:03

标签: 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] + " ");
    }
}

当你除以3/2时它等于1.5,我认为Java只取整数的第一个值。发生了什么事?

5 个答案:

答案 0 :(得分:4)

您要将索引除以。要获得您正在寻找的结果,您应该将该分区置于方括号之外:

System.out.print(a[i] / 2 + " ");
// Here --------------^

答案 1 :(得分:2)

循环的最后一次迭代将是当i = 5. 5/2 = 2. a [2] = 3.

答案 2 :(得分:2)

因为你的循环的最后一个数字是5。 然后5/2 = 2.5,其中java变为2。 如果你看到你的阵列,就会发现在第2位,打印的数字为3。

答案 3 :(得分:2)

我认为你犯的错误是你在考虑存储在数组中的值除以2,而不是索引。或者更确切地说,你正在让值3不是你想要的数组中最后一个值的事实,会影响你对数组查找应该产生什么的看法。将这些分开是很重要的。

你的代码查找(0,1,2,3,4,5)全部除以2,即整数除法为(0,0,1,1,2,2)。也就是说,a[5 / 2] = a[2] = 3。

答案 4 :(得分:1)

i / 2是一个整数除法,它将通过丢弃小数部分来有效地取代产生的值。

这会在代码中生成a[0/2=0]a[1/2=0]a[2/2=1]a[3/2=1]a[4/2=2]a[5/2=2]数组元素。