我写这个方法来交换2D数组中的两个元素:
public void swap(Object[][] array, int a, int b) {
Object temp;
temp = array[a];
array[a] = array[b];
array[b] = temp; // Error, Why?
}
但是最后一行有一个编译时错误。
例如,我想交换array[i][j+1]
和array[i+1][j]
元素,应该如何调用此方法?
(i
和j
在for循环中为int)
更新
我应该按基于元素进行交换吗?或者通过基于索引的?
swap
数组中的参数怎么样?
更新2
public void swap(Object[][] array, int i1, int j1, int i2, int j2) {
Object tempObject = array[i1][j1];
array[i1][j1] = array[i2][j2];
array[i2][j2] = tempObject;
}
这对于交换2D数组的任意元素是否正确?
答案 0 :(得分:1)
您使用a
和b
作为2D阵列中的每个坐标,因此array[a]
和array[b]
指的是代表行{{1}的数组}和a
,而不是单个元素。
当您尝试在最后一行为b
(Object
)分配Object[]
时,会出现错误。
同时使用array[b]
和a
作为b
和i
说明。
j
答案 1 :(得分:0)
一线:
(array[a][b + 1], array[b][a + 1]) = (array[b][a + 1], array[a + 1][b])