2016-04-06 6 views
0

Ich bin derzeit fest auf der Suche nach einem minimalen Wert der 2D-Array-Diagonale? Wenn ich zum BeispielMin Wert eines 2D Array diagonal? [Java]

2 1 3 
4 5 6 
9 8 7 

hätte ich die Diagonale min von 2, 5, 7. Ab sofort habe ich eine verschachtelte For-Schleife, die 0 druckt, ehrlich gesagt ist mein Code unten ziemlich nutzlos, aber könnte es genauso gut posten.

Wenn mir jemand helfen kann, wäre es sehr geschätzt!

Antwort

0
  1. minD initialisiert mit 0 ist das Problem. Da 0 kleiner ist als jeder Ihrer Werte, wird die korrekte Ausgabe nicht ausgegeben.

  2. Ihr Code prüft auf alle Matrixwerte, nicht nur auf die Diagonalen.

    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); 
    

Dieser Code prüft nur für Diagonalelemente.

0

Ich bin mir nicht sicher, ob ich die Frage richtig verstanden habe, aber ich denke, das ist das, was Sie suchen:

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

Dadurch werden die Felder durchqueren, die die Ints halten, um den Wert an jedem inneren Vergleich -arrays index mit dem Wert des int am gleichen Index. Also vergleicht er die Werte bei twoArray [0] [0], twoArray [1] [1] und twoArray [2] [2] und gibt den minimalen Wert zurück.