二维阵列&方法调用 - 初学者

时间:2015-11-13 23:04:00

标签: java arrays

我目前正在为初学者级课程完成家庭作业,我需要帮助构建一个程序来测试作为int [] []呈现的sodoku解决方案是否有效。我这样做是通过创建检查行,列和网格的辅助方法。

要检查列,我调用一个名为getColumn的方法,该方法返回一列[]。当我测试它时它工作正常。然后我将它传递给一个名为uniqueEntries的方法,以确保没有重复项。

问题是,当我调用我的getColumn方法时,它返回一个只包含一个数字的数组(例如11111111,22222222,333333333)。我不知道为什么会那样做。这是我的代码:

int[][] sodokuColumns = new int[length][length];

for(int k = 0 ; k < sodokuPuzzle.length ; k++) {
    sodokuColumns[k] = getColumn(sodokuPuzzle, k);
}

for (int l = 0; l < sodokuPuzzle.length; l++) {
    if(uniqueEntries(sodokuColumns[l]) == false) {
        columnStatus = false;
    }
}

我的助手如下

public static int[] getColumn(int[][] intArray, int index) {

    int[] column = new int[intArray.length];

    for(int i = 0 ; i < intArray.length ; i++) {
        column[i] = intArray[i][index];
    }
    return column; 
}

谢谢!

1 个答案:

答案 0 :(得分:0)

你说:

  

当我调用我的getColumn方法时,它返回一个只包含一个数字的数组(例如11111111,222222222,333333333)。

我发现getColumn方法没有任何问题,因为getColumn(sodokuPuzzle, k)sodokuPuzzle[k]相同,因此甚至不需要它。如果您要以第一个索引为列的方式构思2D数组,那么为了检查唯一性,您只需要编写一个方法来获取行。

您遇到的问题似乎与您未共享的代码的另一部分有关。我怀疑逻辑中存在一个接受用户输入的错误,并且错误地填充了这个错误。

最后,检查唯一性的提示(如果您允许使用它)将创建某种Set(例如HashSet)并添加所有项目(在您的情况下)整数)到那一组。如果该集合与原始项目数组具有相同的大小,那么这些项目都是唯一的,如果大小不同则存在重复项。