Eine gute Antwort wäre:

indexOf gibt 2 zurueck

Vollständiges Programm

Nachdem Sie eine Zeit lang mit dem Testprogramm herumexperimentiert haben, um zu überprüfen, dass die Dinge richtig funktionieren, können Sie das vollständige Programm schreiben:

import java.util.* ;
import java.io.*;

class Eintrag
{
  String name;
  String nummer;

  // Konstruktor
  Eintrag( String name, String nummer )
  {
    this.name = name; this.nummer = nummer;
  }

  // Methoden
  public boolean equals( Object anderes )
  {
    return name.equals( ((Eintrag)anderes).name );
  }

  public String toString()
  {
    return "Name: " + name + " Nummer: " + nummer;
  }

}

class TelefonbuchApp
{
  public static void main ( String[] args) throws IOException
  {
    Vector telefonbuch = new Vector( 10 );

    telefonbuch.addElement( new Eintrag( "Amy", "123-4567") );
    telefonbuch.addElement( new Eintrag( "Bob", "123-6780") );
    telefonbuch.addElement( new Eintrag( "Hal", "789-1234") );
    telefonbuch.addElement( new Eintrag( "Deb", "789-4457") );
    telefonbuch.addElement( new Eintrag( "Zoe", "446-0210") );

    String name;
    BufferedReader stdin = new BufferedReader(
      new InputStreamReader( System.in ) );

    System.out.print("Namen eingeben -->");
    name = stdin.readLine().trim();

    while( !name.equals( "quit" ) )
    {
      int indexWo = telefonbuch.indexOf( new Eintrag( name, "") ) ;

      if ( indexWo >= 0 )
        System.out.println( telefonbuch.elementAt( indexWo ) ) ;
      else
        System.out.println( name + " nicht gefunden" ) ;

      System.out.print("Namen eingeben -->") ;
      name = stdin.readLine().trim() ;
    }

  }
}

Natürlich ist das ein kleines Beispiel und kein brauchbares Programm. Aber die Techniken, die es verwendet, werden in vielen in der Praxis erprobten Programmen eingesetzt. Prüfen Sie sorgfältig:

  1. Wie ein Vector aus benutzerdefinierten Objekten verwendet wird.
  2. Wie die equals() Methode geschrieben ist.
    • Sie muss die geerbte Methode überschreiben damit die indexOf() Methode funktioniert.
    • Typumwandlung muss innerhalb der Methode verwendet werden.
  3. Wie die indexOf() Methode verwendet wird, um den Vector zu durchsuchen.
    • Wie ein "Zielobjekt" konstruiert wird, um es mit der indexOf() Methode zu verwenden.

Sie mögen all das mehr als lästig denn nützlich betrachten, da das vorherige Telefonbuch-Beispiel mit einem einfachen Array ausgezeichnet funktioniert hat. Aber in größeren Programmen ist eine lineare Anordnung von Daten so gebräuchlich und die Operationen mit ihnen so häufig, dass die Vector-Klasse eine wertvolle Zeitersparnis ist.

FRAGE 23:

Die Applikation wäre brauchbarer, wenn sie dem Anwender mehr Freiheit bei der Eingabe des gesuchten Namens geben würde. Zum Beispiel sollte der Anwender in der Lage sein nur Kleinbuchstaben oder Großbuchstaben einzugeben. Wo würden Sie die Änderung im Programm vornehmen, um das zu erlauben?

Inhaltsverzeichnis