为什么不换?

时间:2017-03-20 19:21:41

标签: java arrays

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]);
        }
    }
}

问题很简单:为什么数组成员不会交换位置?

3 个答案:

答案 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]);
    }
}

}