public class Arrays {
public static void main(String[] args){
int x;
int arr[] = {0,1,2,3,4,5,6,7,8,9} ;
for(int a = 1; a < 10; a++){
x = arr[a];
arr[a] = arr[10-a];
arr[10-a] = x;
}
for(int a = 0; a<10; a++){
System.out.println(arr[a]);
}
}
}
问题很简单:为什么数组成员不会交换位置?
答案 0 :(得分:4)
您的交换功能有效。你只需要处理一些事情。
1.仅运行 swap 直到数组的前半部分;否则它会(交换回来)导致原始数组。
2.数组索引从0而不是1开始。
这是您需要的代码
int x;
int arr[] = {0,1,2,3,4,5,6,7,8,9};
int len = arr.length; // saving length in a int variable
for(int a = 0; a < len / 2; a++){
x = arr[a];
arr[a] = arr[len - 1 - a]; //notice the 'len - 1' here as index starts from 0. So last element is 'length of array - 1'
arr[len - 1 - a] = x;
}
for(int a = 0; a < len; a++){
System.out.print(arr[a]);
}
答案 1 :(得分:0)
对于此特定示例,您想要反转数组。
for(int a = 0; a < arr.lenght/2 ; a++){
x = arr[a];
arr[a] = arr[9-a];
arr[9-a] = x;
}
因为在到达数组的一半之后,值再次再次交换到它们的位置。
你需要自己干这个。
答案 2 :(得分:0)
因为你换了两次,你应该只换到中间点并停止
public class Arrays {
public static void main(String[] args){
int x;
int arr[] = {0,1,2,3,4,5,6,7,8,9} ;
for(int a = 0; a < (arr.length / 2); a++){
x = arr[a];
int swapWithIndex = arr.length - 1 - a;
arr[a] = arr[swapWithIndex];
arr[swapWithIndex] = x;
}
for(int a = 0; a<10; a++){
System.out.println(arr[a]);
}
}
}