我正在用Java编写Sudoku代码。

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

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


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

最佳答案

二维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;
}


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

10-04 17:38