使用返回方法交换连续指数中的值。

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

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

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)你会发现它们有相同的内容。

如果你想要的是一个 拷贝 的数组中的偶数元素被交换,那么你需要创建一个新的数组。可以这样做。

int[] outputArray = new int[inputArray2.length];

第二,看起来你把evenodd这个词弄混了 地点 偶数 元素. 其实,我觉得你是两样都在做?你绝对不希望 if(inputArray2[i]% 2 ==1) 行,如果你要交换多个位置。该行将检查是否有 元素 是偶数还是奇数。

第三,老实说,你把代码扔出去,好像是希望能让 东西 就可以了。一般来说,在编程时,最好的方法是先解决问题,再写代码。在这种情况下,你需要先决定如何交换一个数组的偶数位置。我想你还没有做到这一点。不过,你已经很接近了! 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.