我如何在Java数组中的偶数和奇数位置之间交换值

问题描述 投票:1回答:2

我正在尝试将偶数位置的值与奇数位置的值交换。我必须使用Call语句来获取输出,然后返回,然后使用toString()来显示结果。例如:输入= 5,1,4,0输出= 1,5,0,4

这是我使用的代码,但未正确完成交换部分。任何帮助,将不胜感激

public static void main(String[] args) {

 int array2[] = new int[]{11, 43);



        int[] swapp = getSwap(array2);
    System.out.println("Swapped array is "+Arrays.toString(swapp));

  }



    public static int[] getSwap(int[] inputArray2){ 


        for (int i= 0, j=1; i<inputArray2.length; i+=2){
            while (j<inputArray2.length && inputArray2[j] % 2 ==1) {j+=2;}
            if(inputArray2[i]% 2 ==1){
                int t= inputArray2[i];
                inputArray2[i]= inputArray2[j];
                inputArray2[j]=t;
                j+=2;
            }
        }
            return inputArray2;
        }}
java arrays arraylist swap
2个回答
3
投票

您可以通过一个简单的循环来完成此任务,如下所示:

public static void main(String[] args) {
    int array2[] = new int[] { 5, 1, 4, 0 };
    int[] swap = getSwap(array2);
    System.out.println("Swapped array is " + Arrays.toString(swap));

  }

  public static int[] getSwap(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;
    }
    return input;
  }

,输出

Swapped array is [1, 5, 0, 4]

1
投票

提供此类示例时,看到(错误的)输出将很有帮助。但是,我相信我可以看到问题所在。

首先,您似乎对数组在Java中的工作方式有点困惑。除非明确创建新数组,否则不会复制数组。在main函数中,有两个int[]变量,即array2swapp。但是,这些都是对同一数组的引用!如果打印出每一个(在调用getSwap之后),您将看到它们具有相同的内容。

如果您想要的是传入的数组的[[copy,其中的偶数/奇数元素已交换,那么您需要创建一个新的数组。可以这样做:

int[] outputArray = new int[inputArray2.length];
第二,看起来您在将偶数/奇数

位置与偶数/奇数元素混淆。实际上,我认为您同时做这两项?如果要交换偶数/奇数位置,则绝对不希望使用if(inputArray2[i]% 2 ==1)行。该行将检查element是偶数还是奇数。

第三,老实说,您似乎正在抛出代码,希望

something

可以工作。通常,在编程时,最好的方法是先解决问题,然后编写代码。在这种情况下,您需要先决定如何交换阵列的偶数/奇数位置。我认为您还没有这样做。但是,您非常接近! if语句中的代码在正确的轨道上。我鼓励您坐下来尝试自己解决问题,以及到目前为止列出的想法。但是,如果遇到困难,请随意查看我认为的内容

这里是一个快速的解决方案外观图:

public static int[] getSwap(int[] input) { int[] output = new int[input.length]; for (int i = 0; i + 1 < input.length; i += 2) { int j = i + 1; output[i] = input[j]; output[j] = input[i]; } return output; }

© www.soinside.com 2019 - 2024. All rights reserved.