2017-05-01 3 views
1

Unten ist mein Programm, das versucht, den absoluten Wert der Differenz zwischen den maximalen und minimalen Werten in einem zweidimensionalen Array zu finden. Leider bekomme ich immer noch 1 als Antwort, wenn es 12 sein sollte (Math.abs (7 - (- 5)). Meine Vermutung ist, dass es einen einfachen Fehler im Code gibt, den ich verpasse.Differenz von Max und Min in einem 2-D-Array

class Main 
{ 
public static void main(String[] args) 
{ 
    int[][] a = { 
     {-5,-2,-3,7}, 
     {1,-5,-2,2}, 
     {1,-2,3,-4} 
    }; 
    System.out.println(diffHiLo(a)); //should print 12 
} 

public static int diffHiLo(int[][] array) 
{ 
    int max = Integer.MAX_VALUE; 
    int min = Integer.MIN_VALUE; 

    for (int[] cool : array){ 
     for(int z: cool){ 
     if (z < min) 
      min = z; 
     else if (z > max) 
      max = z; 
     } 
    } 

    return Math.abs(max-min);  
    } 
} 
+0

Sie initialisieren 'max' und' min' rückwärts. Setzen Sie 'max = Integer.MIN_VALUE' und' min = Integer.MAX_VALUE; ' –

Antwort

2

Sie sollten min-Integer.MAX_VALUE und max-Integer.MIN_VALUE initialisieren. Sie sind das Gegenteil zu tun, Ihre Schleife verursacht, nichts zu tun (da z nie kleiner als min oder größer als max ist).

Das Ergebnis, das Sie erhalten ist 1, weil min und max nicht durch Ihre Schleife undgeändert werdenist -1 (wegen numerischem Überlauf).