在2D数组中查找最大数字索引

时间:2015-07-22 00:23:41

标签: java arrays 2d max minimum

所以我试图想出这个方法,它将显示2D数组中最大数字的索引。我能够为单个D阵列做到这一点,但我在为2D做这件事时遇到了麻烦。

public static int findMaximumValue(int[ ][ ] a)
{
   int maxVal = a [0][0];
   int i = 0;

   for(i = 0; i < a.length; i++)
   {
      for(int j = 0; j < a[0].length; j++)
      {
         if(a[i][j] > maxVal)
         {
            maxVal = a[i][j];
         }
      }
   }
   return(maxVal);
 }   

2D阵列

public static int [][] findMaximumIndex(int[ ][ ] a)
{
   int maxVal = a[0][0];
   int [][] maxIndex = new int [1][2];
   int row = 0, col = 0; 

   for(row = 0; row < a.length; row++)
   {
      for(col = 0; col < a[row].length; col++)
      {
         if(a[row][col] > maxVal)
         {
           maxVal = a[row][col];
           maxIndex [1] [2] = a[row][col];
         }
      }
   }
   return(maxIndex); 
}

1 个答案:

答案 0 :(得分:1)

首先,当您想要返回maxValue的索引时,您将返回一个2d int数组,该索引将是行索引和列索引。也许你想返回一个大小为2的数组来表示这个?更多信息会有所帮助。其次,我不确定你使用maxIndex 2d数组做了什么。每次遍历2d数组时,只需将maxvalue替换为当前元素。没有IDE接近调试,但应该是这样的:

  public static int[] findMaximumIndex(int[ ][ ] a)
{
    int maxVal = -99999
    int[] answerArray = new int[2];
    for(int row = 0; row < a.length; row++)
    {
        for(int col = 0; col < a[row].length; col++)
        {
            if(a[row][col] > maxVal)
            {
                maxVal = a[row][col];
                answerArray[0] = row;
                answerArray[1] = col;
            }
        }
    }
    return answerArray;
}

这里的answerArray [0]将拥有max元素的行索引,而answerArray [1]将拥有max元素的列索引