我创建了一个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
我该如何解决这个问题?
非常感谢!
答案 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;
}
}