如何在二维数组中切换两列?

时间:2019-06-02 03:01:58

标签: java arrays multidimensional-array

我正在用Java编写Sudoku代码。

我已经写了一个代码,但是行而不是列被切换了!

int[] tempField = array2D[myFirstCol_toSwitch];
array2D[myFirstCol_toSwitch] = array2D[mySecondCol_toSwitch];
array2D[mySecondCol_toSwitch] = tempField;

为了生成Sudoku板,我需要随机交换列。

2 个答案:

答案 0 :(得分:0)

一列的条目分布在所有行中,每行一项。因此,为了交换两列,您必须遍历所有行并交换每行中的适当项目,如下所示:

// ints c1 and c2 are the indices of the columns to be swapped
for (int[] row : array2d){
{
    int t = row[c1];
    row[c1] = row[c2];
    row[c2] = t;
}

答案 1 :(得分:0)

2D Java数组的“行”和“列”取决于您的角度;即您如何在心理上将数组映射为垂直和水平。

但是,如果您当前在示例中所做的是切换“行”(根据您的思维模型),那么切换“列”的方法就是遍历各个元素。例如像这样的东西:

for (int i = 0; i < array2D; i++) {
    int tempField = array2D[i][myFirstCol_toSwitch];
    array2D[i][myFirstCol_toSwitch] = array2D[i][mySecondCol_toSwitch];
    array2D[i][mySecondCol_toSwitch] = tempField;
}

这可以用(可以说)更整洁的其他方式来写。我选择这种方式是为了清楚地说明转置这两列实际上需要发生什么。