2015-07-22 114 views
1

所以我試圖想出這種方法將顯示二維數組中的最大數目的索引。我能夠爲單個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); 
} 

二維數組

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); 
} 
+0

在二維數組中,您返回一個元素,但返回類型爲整數2d數組 –

+0

maxVal = a [row] [col]; maxIndex [1] [2] = a [row] [col];你在分配的兩個步驟中做同樣的事情maxvalue –

回答

1

首先,你是返回一個二維int數組,當你想返回maxValue(最大值)的指數,這將是一個行索引和列索引。也許你想返回一個大小爲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]將行索引的最大元素和answerArray [1]將有最大元素

列索引
+0

這將給我最大值,但我試圖輸出二維數組中的最大值的索引。 –

+0

抱歉誤會,因爲你有行和列,所以會有兩個索引。所以你想打印出行和列?或者你可以把它們放在一個2號的數組中,你可以返回,但這將是非常奇怪的 – GregH

+0

這就是我想要做的,我想返回它而不是打印出來。我只是不確定如何完全做到這一點。 –