我可以在java中使用swap函数交换两个int []吗?

时间:2015-01-18 18:54:55

标签: java arrays multidimensional-array swap

我创建了一个int []的2D数组 现在,我想在2D数组中交换两个int []

我的代码是:

swap(values[row][col], values[randomRow][randomCol]); 

其中values是int []的2D数组。 所以values [int] [int]是一个int [];

我收到如下错误消息:

Error: The method swap(int[], int[]) is undefined for the type ShufflePic

我该如何解决这个问题?

非常感谢!

4 个答案:

答案 0 :(得分:1)

Java是pass-by-value。你不能交换像这样的值。

而是使用这种方法:

void swap(int[][] array, int row1, int col1, int row2, int col2) {
    int temp = array[row1][col1];
    array[row1][col1] = array[row2][col2];
    array[row2][col2] = temp;
}

现在您可以调用swap(...)方法来交换值

swap(values, row, col, randomRow, randomCol);

答案 1 :(得分:0)

mybe你的方法看起来应该是

swap(int[] arryFirst, int arryFirstRow, int arryFirstCol, int[] arrySec, int arrySecRow, int arrySecCol)

答案 2 :(得分:0)

  

我创建了一个int []

的2D数组

你确实这样做了,但你可能想要创建一个int的二维数组,而不是int[]

values[row][col] = 5 //2d int array
values[row][col] = new int[length] //3d int array. Probably not what you intended

一旦你解决了这个问题,关于传递值的其他答案应该适合你。

编辑: 如果那是你想要的,那么这个方法应该有效:

public void swapArrays(int[][][] arr, int row1, int col1, int row2, int col2) {
    int[] temp = arr[row1][col1];
    arr[row1][col1] = arr[row2][col2];
    arr[row2][col2] = temp;
}

然后你会用:

来调用它
swapArrays(values, row, col, randomRow, randomCol);

您收到错误的原因是您没有定义一个接收两个数组的交换函数。但是,即使你有,它也不会正常运行,因为传值,传递引用的东西。 (谷歌有关它的更多信息。)

使用我提出的方法,它将引用整个数组,使其能够更改其值。如果您刚刚传入values[row][col],则该方法只会看到存储在该索引处的值,但不能访问values数组。

答案 3 :(得分:0)

基本上,这会根据这些指数找到指数和掉期。交换后尝试打印列表中的项目。当然,这种技术也可以用于2D阵列,但我将此视为您的挑战。

 public class Test {
    static int[] list = {4, 5, 6, 3, 1, 2};

    public static void main(String[] args) {
        swap(6, 2); // test swap
    }

    public static void swap(int a, int b) {
        int a_index = 0;
        int b_index = 0;

        for (int i = 0; i < list.length; i++) {
            if (list[i] == a) a_index = i;
            if (list[i] == b) b_index = i;
        }

        list[a_index] = b;
        list[b_index] = a;
    }
}