2016-04-06 10 views
0

私は現在、2D配列対角の最小値を見つけることに取り掛かっていますか?たとえば、私が持っていた場合2D配列の最小値は斜めにですか? [Java]

2 1 3 
4 5 6 
9 8 7 

私は2、5、7の対角の最小値が必要です。 現在のところ、私は0を印刷するネストされたforループを持っています。正直なところ私のコードはかなり無駄ですが、ポストすることもできます。

double minD = 0; 
    for (int row = 0; row < a.length; row++) { 
     for (int col = 0; col < a[row].length; col++) { 
     minD = Math.min(minD, a[row][col]); 
     System.out.printf("%5.2f", minD); 

誰かが私を助けることができれば、大いに感謝します! 0で初期化

答えて

0
  1. minDが問題です。 0はいずれの値よりも小さいので、正しい出力が得られません。

  2. コードでは、対角線だけでなく、すべての行列値がチェックされます。

    int arr[][] = {{2, 1, 3}, {4,5,6}, {9,8,7} }; 
    int min = arr[0][0]; 
    for(int i=0; i<arr.length; i++) { 
        if(arr[i][i]<min) 
         min = arr[i][i]; 
    } 
    System.out.println(min); 
    

だけ対角要素のためのこのコードをチェックします。

0

私は私が正しく質問を理解してかどうかわからないんだけど、私は、これはあなたが探しているものだと思う:

public class ArrayStuff { 
    public static void main(String[] args) { 
     int[][] twoArray = {{2, 1, 3}, {4, 5, 6}, {9, 8, 7}}; 

     // start with the highest value possible, that way anything that you find 
     // in the first loop will be smaller. 
     int minValue = Integer.MAX_VALUE; 

     // loop through the outer arrays 
     for (int i = 0; i < twoArray.length; i++) { 
      int j = i; 
      if (twoArray[i][j] < minValue) { 
       minValue = twoArray[i][j]; 
      } 
     } 

     System.out.println(minValue); 
    } 
} 

これは、それぞれの内部で値を比較し、int型を保持する配列を横断します-arraysは同じインデックスのintの値でインデックス付けします。したがって、twoArray [0] [0]、twoArray [1] [1]、およびtwoArray [2] [2]の値を比較し、最小値を返します。

関連する問題