为什么此计划的输出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只取整数的第一个值。发生了什么事?
答案 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]
数组元素。