Python中文网

一个关于 编程问题的解答网站.

有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的逆向数组代码解释

有人能解释一下下面代码中每一行的作用吗?我基本上把-1和-I搞混了

还有,我们可以反转没有临时值的数组吗

for (int i = 0; i < numbers.length / 2; i++) { // why divide by 2
     int temp = numbers[i];
     numbers[i] = numbers[numbers.length - 1 - i];// what this does?
     numbers[numbers.length - 1 - i] = temp;`i];
     numbers[numbers.length - 1 - i] = temp;

共 (1) 个答案

  1. # 1 楼答案

    简单地说,这个循环是交换数组中值的位置

    例如,以这个数组[1, 2, 3, 4]为例

    循环首先将i处的元素设置为变量temp。 然后,数组末尾的数字减去我们前进了多少次迭代/位置(i),被设置为数组的当前位置(i),从而替换1。换言之,它会从自身中选择距离最远且尚未交换的元素。紧接着,temp被设置为4的旧位置

    第一次迭代使数组看起来像[4, 2, 3, 1]

    第二次迭代使数组看起来像[4, 3, 2, 1]

    现在阵列反转。但请注意,我们只迭代了数组长度的一半。不需要继续迭代,如果我们再进一步,就会得到一个数组越界错误

    (之所以使用-1,是因为.length返回数组中从1开始计数的元素数。)