zur vorherigen Seite zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Ja.


Max of Eight

public class UnitTestMax
{

  public static int maxTwo( int X, int Y)
  {
    if ( X > Y )
      return X;
    else
      return Y;
  }

  public static int maxFour( int A, int B, int C, int D)
  {
    int maxAB = maxTwo( A, B );
    int maxCD = maxTwo( C, D );
    return maxTwo( maxAB, maxCD );
  }

  public static int maxEight( int A, int B, int C, int D,
      int E, int F, int G, int H)
  {
    int maxABCD = maxFour( A, B, C, D );
    int maxEFGH = maxFour( E, F, G, H );
    return maxTwo( maxABCD, maxEFGH );
  }

  public static void main (String[] args )
  {
    int A=  1, B= 3, C=  4, D= 30;
    int E= 45, F= 7, G= 21, H=  7;
    System.out.println("The max of "
      + A + ", " + B + ", " + C + ", " + D + ", "
      + E + ", " + F + ", " + G + ", " + H
      + " is: " +
      maxEight( A, B, C, D, E, F, G, H) );
  }
}

Bei Call by Value werden die Werte vom Aufrufer berechnet und in die formalen Parameter der aufgerufenen Methode kopiert. Es ist in Ordnung, wenn die Berechnung eines Wertes eine andere Methode betrifft.

Um das Maximum von acht ganzen Zahlen zu berechnen, verwenden wir zweimal maxFour() (was zweimal maxTwo() verwendet). Die Regeln für den Gültigkeitsbereich sorgen dafür, dass nichts durcheinander gerät. Wir müssen uns nicht für jede Methode neue Parameternamen ausdenken.

Die Methode maxTwo() wird in diesem Beispiel siebenmal aufgerufen, wobei jedes Mal andere Werte an die formalen Parameter gebunden (zugewiesen) werden.

Die Abbildung zeigt diesen Vorgang. Jeder Kreis zeigt einen bestimmten Aufruf der genannten Methode mit Werten, die in diese Methode kopiert wurden (z. B. 1, 3, 4, 30), und das Maximum dieser Werte, das an den Aufrufer zurückgegeben wird (z. B. 30). Die roten Zahlen zeigen die Reihenfolge der Aufrufe. Der erste Aufruf erfolgt an maxEight(), der letztendlich 45 an den Aufrufer zurückgibt.


call to maxEight and its calls

Frage 16:

(Denkfrage: ) Wie könnte das Maximum von sieben Integern berechnet werden?


zur vorherigen Seite zum Inhaltsverzeichnis   zur nächsten Seite