簡體   English   中英

JAVA將2D數組的各個維度作為1D數組傳遞

[英]JAVA Pass individual dimensions of a 2D array as 1D arrays

我正在嘗試檢查數組的每一行,然后每一列是否包含重復值(拉丁矩形檢查)。 我制作了一種檢查1D數組的方法,但無法弄清楚如何將2D數組的一部分傳遞到其中。 這是我的一維數組檢查方法:

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數組在每個循環后都不會重置值,因此當它再次運行時,它將檢查新值與舊值。 我似乎找不到解決方法。 我嘗試在循環之前將arrays設置為null,但這會清除大小並將其擰緊更多。

任何幫助表示贊賞。

編輯:這是我主要方法中的調用:

      if (arrayChecker(originalArray))
         System.out.println("Invalid");
      else
         System.out.println("Valid");
hasDuplicates(inArray[row])

將傳遞1d數組給hasDuplicates

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM