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

Java 如何在二维数组中切换两列?,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我正在用Java编写一个数独代码 我已经写了一段代码,但是行不是列,而是交换的 int[] tempField = array2D[myFirstCol_toSwitch]; array2D[myFirstCol_toSwitch] = array2D[mySecondCol_toSwitch]; array2D[mySecondCol_toSwitch] = tempField; 为了生成数独板,我需要随机交换列。列的条目分布在所有行中,每行一项。因此,为了交换两列,必须循环遍历所有行并交换

我正在用Java编写一个数独代码

我已经写了一段代码,但是行不是列,而是交换的

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

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

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

// 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;
}
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;
}

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

// 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;
}
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;
}
2D Java数组的“行”和“列”取决于您的透视图;i、 e.你是如何将数组映射为垂直和水平的

但是,如果您当前在示例中所做的是切换“行”(根据您的心智模型),那么切换“列”的方式是迭代各个元素;e、 g.类似这样的情况:

// 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;
}
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;
}
for(int i=0;i
这可以用(可以说)更整洁的其他方式书写。我选择这种方式是为了明确转换这两列实际需要做什么。

2D Java数组的“行”和“列”取决于您的视角;i、 e.你是如何将数组映射为垂直和水平的

但是,如果您当前在示例中所做的是切换“行”(根据您的心智模型),那么切换“列”的方式是迭代各个元素;e、 g.类似这样的情况:

// 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;
}
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;
}
for(int i=0;i

这可以用(可以说)更整洁的其他方式书写。我选择这种方式是为了清楚地说明在转换这两列时实际需要做些什么。

我已经采纳了你的建议。它按我的要求工作。谢谢我很高兴你解决了你的问题。如果这能解决你的问题,请告诉我。我已经采纳了你的建议。它按我的要求工作。谢谢我很高兴你解决了你的问题。如果它解决了你的问题,请告诉我。我看到了它在思想上的映射,正如Stephan所说,它实际上是被java转置的。整数网格[N][N]={0,0,0,0,2,0,0,0,0,0},{0,0,3,0,0,0,0,0,5},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{, {1,0,0,0,5,0,0,0,0}}; 这里是嵌套数组,我将其视为行,实际上它们在java中被视为列!我说得对吗?我看到了它在精神上的映射,正如Stephan所说,它实际上是被java转置的。整数网格[N][N]={0,0,0,0,2,0,0,0,0,0},{0,0,3,0,0,0,0,0,5},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{, {1,0,0,0,5,0,0,0,0}}; 这里是嵌套数组,我将其视为行,实际上它们在java中被视为列!我说得对吗?