交换数组

时间:2015-10-17 23:33:52

标签: java arrays for-loop

问题在于:写一个名为swapPairs的方法,它接受一个整数数组并交换相邻索引处的元素。也就是说,交换元素0和1,交换元素2和3,依此类推。如果数组具有奇数长度,则最终元素应保持不变。例如,在调用您的方法后,列表{10,20,30,40,50}应该变为{20,10,40,30,50}。

写入方法printArray传递一个数组并打印出每个元素 使用此方法打印由swapPairs修改的数组。

这是我的代码:

public static void swapPairs(int[] a){
    int len=a.length;
        if(len%2 ==0){
            for(int i=0; i<len; i=i+2){
                a[i]=a[i+1];
                a[i+1]=a[i];
                int[] b={a[i]+a[i+1]};
            }   
        }
        if(len%2 !=0){
            for(int j=0; j<len; j=j+2){
                a[j]=a[j+1];
                a[j+1]=a[j];
                a[len-1]=a[len-1];
                int[] b={a[j]+a[j+1]+a[len-1]};
            }
        }   
}
public static void printArray(int[] a){
    System.out.println(a);
}

然而,它返回的是[I @ 2a139a55

7 个答案:

答案 0 :(得分:1)

您需要打印的是Arrays.toString(a)

现在,您只是打印Array对象的Hashcode

答案 1 :(得分:0)

首先,您的交换方法可以简化。将两个数字相加,然后从总和中减去每个数字(以获得另一个数字)。像,

public static void swapPairs(int[] a) {
    for (int i = 0; i < a.length - 1; i += 2) {
        int c = a[i] + a[i + 1];
        a[i] = c - a[i];
        a[i + 1] = c - a[i + 1];
    }
}

然后您可以使用Arrays.toString(int[])获取String。像,

public static void printArray(int[] a) {
    System.out.println(Arrays.toString(a));
}

我测试了上面的内容,如

public static void main(String[] args) {
    int[] t = { 1, 2, 3, 4 };
    printArray(t);
    swapPairs(t);
    printArray(t);
}

我得到了

[1, 2, 3, 4]
[2, 1, 4, 3]

答案 2 :(得分:0)

几次破坏我的电脑后,这里是实际的工作代码:

private boolean isAdded;

答案 3 :(得分:0)

public static void swapPairs(int[] arr){
    int length = arr.length%2 == 0? arr.length : arr.length-1;

    for(int i=0; i<length; i=i+2) {
        int temp = arr[i];
        arr[i] =     arr[i+1];
        arr[i+1] = temp;
    }
    // print the array
    for(int i=0;i<arr.length;i++){
        System.out.print(arr[i]+" ");
    }
}

答案 4 :(得分:0)

final int[] number = new int[] { 1, 2, 3, 4, 5, 6, 7 };
    int temp;
    for (int i = 0; i < number.length; i = i + 2) {
        if (i > number.length - 2) {
            break;
        }
        temp = number[i];
        number[i] = number[i + 1];
        number[i + 1] = temp;
    }
    for (int j = 0; j < number.length; j++) {
        System.out.print(number[j]);
    }

答案 5 :(得分:0)

导入 java.util.Scanner; 公共类 SwapEveryPair {

public static void main(String[] args) {
    Scanner scn = new Scanner(System.in);
    int n = scn.nextInt();
    int[] arr = new int[n];
    for (int i = 0; i < arr.length; i++) {
        arr[i] = scn.nextInt();

    }
    for (int i = 0; i < (arr.length - 1); i += 2) {
        int temp = arr[i];
        arr[i] = arr[i + 1];
        arr[i + 1] = temp;
    }
    for(int i=0; i< arr.length; i++){
        System.out.println(" " + arr[i]);
    }
}
}``

答案 6 :(得分:-1)

我认为这应该可行,

public static void swapAlternate(int[] input){
 for(int i=0;i<input.length - 1; i+=2){
        int temp = input[i];
        input[i] = input[i+1];
        input[i+1] = temp;
    }
}