2015-11-13 22 views
1

我目前正在爲初學者級別的課程作業,我需要幫助構建一個程序,測試sodoku解決方案呈現爲int [] []是否有效。我通過創建幫助方法來檢查行,列和網格。2維數組和方法調用 - 初學者

要檢查列,我調用一個名爲getColumn的方法,該方法返回一個列[]。當我測試它時,它工作正常。然後我使用名爲uniqueEntries的方法將它傳遞出來,以確保沒有重複項。

問題是,當我調用我的getColumn方法時,它返回一個只包含一個數字的數組(例如11111111,222222222,33333333)。我不知道它爲什麼這樣做。這裏是我的代碼:

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

謝謝!

+3

這很難說。 sodokuPuzzle中有哪些數據? –

+0

@Eskalior將獲得行,而不是列,這取決於OP如何在他們的頭部定義它們。 –

回答

0

你說:

,當我打電話給我的getColumn方法,它返回一個包含了一個數字(例如11111111,22222222,33333333)的陣列。

我沒有看到比它甚至沒有必要的事實之外的其他getColumn方法的任何問題,因爲getColumn(sodokuPuzzle, k)相同sodokuPuzzle[k]。如果你打算將你的二維數組以第一個索引是列的方式進行概念化,那麼爲了檢查唯一性,你只需要編寫一個方法來獲取行。

您遇到的問題似乎與您未分享的另一部分代碼有關。我懷疑在接受用戶輸入的邏輯中存在一個錯誤,並且它錯誤地填充了這個難題。

最後一個檢查唯一性的提示(如果您可以使用它)將創建某種Set(例如HashSet)並將所有項目(以您的整數)添加到該集合中。如果該組的大小與原始數組的大小相同,則這些項目都是唯一的,如果大小不同,則重複。