我正在学习数组,我正在尝试颠倒数组中的顺序。这是我到目前为止所采用的方法,但它只适用于数组中前半部分的值。我做错了什么?
public static void reverse(int[] anArray)
{
int[] a = anArray ;
for (int j = 0; j <= (a.length - 1); j++ )
{
anArray[j] = a[(anArray.length - j - 1)];
}
}
最佳答案
您需要创建一个临时位置才能进行交换。这段代码将数组的末尾写到前面,但是当你写到数组的末尾时,前半部分的值已经丢失了。
public static void reverse(int[] a)
{
int l = a.length;
for (int j = 0; j < l / 2; j++)
{
int temp = a[j];
a[j] = a[l - j - 1];
a[l - j - 1] = temp;
}
}
此外,您将 j
递增两次。 for 循环定义的最后一部分在每个循环之间进行递增。您不需要在循环 block 内手动执行此操作。
关于Java数组顺序反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8095045/