Ja, natürlich. Aber wir müssen auf die null
s aufpassen.
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.
(Rückblick: ) Angenommen, dass telefonbuch[ j ] != null
true
ist.
Welche möglichen Werte könnte der gesamte Ausdruck haben?