2014-02-21 6 views
0

Я пытаюсь проверить, есть ли каждая строка массива, а затем каждый столбец содержит повторяющиеся значения (проверка латинского прямоугольника). Я сделал метод, который проверяет массив 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"); 

ответ

1
hasDuplicates(inArray[row]) 

Пройдет 1d массива для hasDuplicates

+0

О, круто, я не знал, что работал. Как пропустить колонку? Не использовал бы два [] [] только пропустить адрес вместо целого столбца? – coinbird

+0

@CoinBird: Если вы хотите пройти 1-й столбец, то выберите 1-й элемент из каждой строки и создайте новый массив. – xyz

+0

@CoinBird: Вы отмечаете это как ответ, если он работал http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – xyz

Смежные вопросы