我正在学习数组,我试图颠倒数组中的顺序.这是我迄今为止所获得的方法,但它仅适用于数组中前半部分的值.我究竟做错了什么?
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)];
}
}
Run Code Online (Sandbox Code Playgroud)
您需要创建一个临时位置才能进行交换.此代码将数组的末尾写入前面,但是当您编写数组的末尾时,前半部分的值已经丢失.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
此外,您正在增加j两次.for循环定义的最后一部分执行每个循环之间的增量.您不需要在循环块内手动执行此操作.