【问题标题】:JAVA Pass individual dimensions of a 2D array as 1D arraysJAVA将二维数组的各个维度作为一维数组传递
【发布时间】:2014-02-21 05:27:40
【问题描述】:

我正在尝试检查数组的每一行是否包含重复值(拉丁矩形检查)。我做了一个检查一维数组的方法,但我不知道如何将二维数组的一部分传递给它。这是我的一维数组检查方法:

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 ,但这会清除大小并将其搞砸。

感谢任何帮助。

编辑:这是我在 main 方法中的调用:

      if (arrayChecker(originalArray))
         System.out.println("Invalid");
      else
         System.out.println("Valid");

【问题讨论】:

    标签: java arrays loops methods


    【解决方案1】:
    hasDuplicates(inArray[row])
    

    将一维数组传递给hasDuplicates

    【讨论】:

    • 哦,太棒了,我不知道这行得通。我将如何通过列?不会使用两个 [][] 只是传递一个地址而不是整个列?
    • @CoinBird:如果你想传递第一列,那么从每一行获取第一个元素并创建新数组。
    • @CoinBird:如果它有效,则将其标记为答案meta.stackexchange.com/questions/5234/…
    猜你喜欢
    • 2015-07-20
    • 2015-08-23
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    相关资源
    最近更新 更多