zur vorherigen Seite  zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Ja, natürlich. Aber wir müssen auf die nulls aufpassen.


Lineare Suche

Hier ist etwas Code mit der teilweise fertigen suchen() Methode:

suchen() gibt entweder eine Referenz auf den gefunden Eintrag zurück oder null, wenn der Eintrag nicht gefunden werden konnte.


class TelefonEintrag
{
  private String name;     // Name der Person
  private String telefon;  // ihre Telefonnummer

  . . . . .
}

class TelefonBuch
{
  private TelefonEintrag[] telefonbuch;

  public TelefonBuch()    // Konstruktor
  {
    telefonbuch = new TelefonEintrag[ 5 ] ;

    . . . . . .
  }

  public TelefonEintrag suchen( String targetName )
  {
    // lineare Suche verwenden, um den Zielnamen zu finden

    for ( int j=0; j < telefonbuch.; j++ )
    {
      if ( telefonbuch[ j ] != null && telefonbuch[ j ].getName().equals( targetName ) )
        return telefonbuch[ j ];
    }

    return null;
  }
}

Gebräuchlicher Trick: Denkt daran, dass && ein Short-Circuit-Operator ist. Das bedeutet sobald ein false gefunden wird, ist die Auswertung des ganzen Boole'schen Ausdrucks beendet. Wir betrachten diesen Ausdruck:

telefonbuch[ j ] != null && telefonbuch[ j ].getName().equals( targetName )

Wenn die Zelle j von telefonbuch null ist, dann wird die rechte Seite des Ausdrucks nicht ausgewertet. Da der gesamte Ausdruck false ist, egal was der rechte Ausdruck ergeben würde.


FRAGE 13:

(Rückblick: ) Angenommen, dass telefonbuch[ j ] != null true ist. Welche möglichen Werte könnte der gesamte Ausdruck haben?

zur vorherigen Seite  zum Inhaltsverzeichnis   zur nächsten Seite