我们如何在数组中交换两个元素?

kus*_*sur 1 java arrays

我想解决的问题如下: -

给定一个整数长度为3的数组,返回一个元素"向左旋转"的数组,因此{1,2,3}产生{2,3,1}

我想出了以下代码: -

public int[] rotateLeft3(int[] nums) {
  for(int i=0;i<2;i++)
   swap(nums[i],nums[i+1]);
  return nums;
}

public void swap(int a,int b)
{
 int temp = a;
 a = b;
 b= temp;
}
Run Code Online (Sandbox Code Playgroud)

但是,它未成功运行.在C++的情况下,我可以将引用作为参数传递,问题将被排序,那么为什么不在这里发生?

以下代码正在运行: -

public int[] rotateLeft3(int[] nums) {
  int temp = nums[0];
  nums[0] = nums[1];
  nums[1] = temp;
  temp = nums[1];
  nums[1] = nums[2];
  nums[2] = temp;
  return nums;
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码是完整的蛮力写作,我不是很喜欢它.你能否建议我如何让第一种方法起作用?

Bev*_*ynQ 6

java方法调用中的所有参数都按值传递.您需要传入数组和要交换的两个索引.

public void swap(int[] array, int a,int b)
{
 int temp = array[a];
 array[a] = array[b];
 array[b]= temp;
}
Run Code Online (Sandbox Code Playgroud)