Я пытаюсь проверить, есть ли каждая строка массива, а затем каждый столбец содержит повторяющиеся значения (проверка латинского прямоугольника). Я сделал метод, который проверяет массив 1D, но я не могу понять, как передать в него часть 2D-массива. Вот мой проверка 1D массив метод: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 перед циклом, но это очищает размер и затягивает его еще больше.
Любая помощь приветствуется.
EDIT: Вот мой вызов в моем основном методе:
if (arrayChecker(originalArray))
System.out.println("Invalid");
else
System.out.println("Valid");
О, круто, я не знал, что работал. Как пропустить колонку? Не использовал бы два [] [] только пропустить адрес вместо целого столбца? – coinbird
@CoinBird: Если вы хотите пройти 1-й столбец, то выберите 1-й элемент из каждой строки и создайте новый массив. – xyz
@CoinBird: Вы отмечаете это как ответ, если он работал http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – xyz