0
我試圖檢查數組的每一行,然後每列包含重複值(拉丁矩形檢查)。我做了一個檢查一維數組的方法,但我無法弄清楚如何將二維數組的一部分傳遞給它。這是我的一維數組的檢查方法:JAVA將2D陣列的單個維度傳遞爲1D陣列
public static boolean hasDuplicates(int [] inArray)
{
for(int i = 0; i < inArray.length; i++)
for(int j = i + 1; j < inArray.length; j++)
if(inArray[i] == inArray[j])
return true;
return false;
}
這裏是我調用我以前的方法的方法的混亂:
public static boolean arrayChecker(int[][] inArray)
{
int [] splitRows = new int[inArray.length];
int [] splitCols = new int[inArray[0].length];
for(int row = 0; row < inArray.length; row++)
{
for(int col = 0; col < inArray[0].length; col++)
splitRows[col] = inArray[row][col];
if(hasDuplicates(splitRows))
return true;
}
for(int col = 0; col < inArray[0].length; col++)
{
for(int row = 0; row < inArray.length; row++)
splitCols[row] = inArray[row][col];
if(hasDuplicates(splitCols))
return true;
}
return false;
}
我知道這個問題,但現在的問題是,我的splitRows分離和splitCols陣列穿上」 t在每個循環後重置值,所以當它再次運行時,它將檢查新值與舊值。我似乎無法找到解決辦法。我試圖在循環之前設置數組= null,但是清除了大小並將其擰得更大。
任何幫助表示讚賞。
編輯:這是我在我的主要方法調用:
if (arrayChecker(originalArray))
System.out.println("Invalid");
else
System.out.println("Valid");
那太酷了,我不知道的工作。我將如何通過一列?不會使用兩個[] []只是傳遞一個地址而不是整個列? – coinbird
@CoinBird:如果你想傳遞第一列,然後從每一行獲取第一個元素並創建新的數組。 – xyz
@CoinBird:如果它工作,則將其標記爲答案http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – xyz