zur vorherigen Seite  zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Das Anfangselement (Index 0) in einem Array wird niemals größer sein als das größte Element in einem Array. (Es könnte das größte Element des Arrays sein; aber das ist OK.)

  max = array[0];

Diese Möglichkeit max zu initialisieren setzt voraus, dass es mindestens ein Element im Array gibt. Wenn es keines gibt, wird das Java System feststellen, dass der Index "0" außerhalb der Grenzen liegt und wird eine Ausnahme auslösen.

Klassischer Bug(1): max falsch initialisieren

Klassischer Bug (1): Ihr könntet versucht sein max mit etwas zu initialisieren von dem Ihr annehmt, dass es bestimmt weniger ist als das Maximum z.B. -999. Aber wenn Ihr das tut, macht Ihr eine gefährliche Annahme über die Daten. Vielleicht enthält das Array die nationalen Schulden der letzten 10 Jahre. Alle diese Werte sind negativ und -999 würde das richtige Maximum leicht überschreiten.

Betrachtet das Programm. Beachtet wie max mit dem ersten Element des Arrays (Index 0) initialisiert wird. Das setzt voraus, dass das Array existiert und mindestens ein Element hat. Für das gegenwärtige Programm ist das eine sichere Annahme. Das könnte in anderen Situationen nicht der Fall sein.

Die for-Schleife betrachtet jedes Element des Arrays, beginnend mit dem ersten Element mit dem Index 0, um zu sehen ob das Element größer ist als das gegenwärtige Maximum.

Es wäre OK mit index 1 zu beginnen, da der Index 0 für die Initialisierung von max verwendet wurde. Aber das Programm funktioniert gut so wie es geschrieben wurde (sobald wir die Lücke ausgefüllt haben.)


class MaxAlgorithmus
{

  public static void main ( String[] args )
  {

    int[] array =  { -20, 19, 1, 5, -1, 27, 19, 5 } ;
    int   max;

    // das gegenwärtige Maximum initialisieren

    max = array[0];

    // das Array durchsuchen
    for ( int index = 0; index < array.length; index++ )
    {

      if (  )  // das gegenwärtige Element untersuchen

        max = array[ index ];      // wenn es bis dahin das Größte ist, max ändern

    }

    System.out.println("Das Maximum dieses Arrays ist: " + max );

  }
}

FRAGE 9:

Wir vervollständigen das Programm.

zur vorherigen Seite  zum Inhaltsverzeichnis   zur nächsten Seite