Telefonbuch (Vector)

kitz

Mitglied
Hallo,

ich soll ein Telefonbuch mit Menü erstellen und soll dabei einen Vector verwenden.
Ich habe dazu folgendes an Klassen inzwischen:

In der Klasse "Telefonlisteneintrag" sollen Namen und Telefonnummern erfasst werden können

Die Klasse "Telefonliste" soll Objekte der Klasse Telefonlisteneintrag verwalten mit Datenstruktur Vector

Java:
public class Telefonlisteneintrag {

    String name;
    String nummer;

    Telefonlisteneintrag (String name, String nummer) {
        this.name=name;
        this.nummer=nummer;
    }

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

Und

Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Enumeration;
import java.util.Vector;


public class Telefonliste2 {

     public BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
        public Vector<Telefonlisteneintrag> telebuch;
        public Enumeration num;

        public Telefonliste2() {
                telebuch = new Vector( 10, 5);
                telebuch.addElement( new Telefonlisteneintrag( "Amy", "123-4567"));
                    telebuch.addElement( new Telefonlisteneintrag( "Bob", "123-6780"));
                    telebuch.addElement( new Telefonlisteneintrag( "Hal", "789-1234"));
                telebuch.addElement( new Telefonlisteneintrag( "Deb", "789-4457"));
                       telebuch.addElement( new Telefonlisteneintrag( "Zoe", "446-0210"));
                telebuch.addElement( new Telefonlisteneintrag( "Abe", "123-4567") ) ;
        }

        //Methoden

        public void menu(){
                System.out.println("Telefonbuch: ");
                System.out.println("<1>  Alle Eintraege anzeigen <ansteigend>");
                System.out.println("<2>  Eintrag Anlgegen");
                System.out.println("<3>  Eintrag löschen");
                System.out.println("<4>  Person suchen");
                System.out.println("<5>  Nummer identifizieren");
                System.out.println("<quit> Ende");

                try {
                
                String eingabe = stdin.readLine();
                if (eingabe.equals("quit"))
                        System.exit(0);
                 int auswahl = Integer.parseInt(eingabe);
                System.out.println();

                if (auswahl==1)
                alleAnzeigen();
                if (auswahl==2)
                eintragAnlegen();
                if (auswahl==3)
                eintragLöschen();
                if (auswahl==4)
                personSuchen();
                if (auswahl==5)
                nummerIdentifizieren();
               

                }
                catch (IOException ex)
                {
                System.out.println("Keine gueltige Auswahl!");
                }
          }

        public void alleAnzeigen() {
                if (!telebuch.isEmpty()) {
                num = telebuch.elements();
                while( num.hasMoreElements() )
                        System.out.println(num.nextElement() );
                }
                else
                        System.out.println("Telefonbuch ist leer!");
                System.out.println("Mit irgendeiner Taste zum Menue");
                try {
                String name = stdin.readLine();
                System.out.println();
                }
                catch(IOException ex) {
                System.out.println("Ungueltig!");
                }
                menu();
        }

        public void personSuchen() {

                System.out.println("Zurueck zum Menue mit <quit>");
                System.out.print("Namen eingeben: ");

                try {
                   String name = stdin.readLine();
                        while(!name.equals("quit")) {
                             int indexWo = telebuch.indexOf( new Telefonlisteneintrag( name, "") ) ;
                             if ( indexWo >= 0 )
                              System.out.println( telebuch.elementAt( indexWo ) ) ;
                            else
                              System.out.println( name + " nicht gefunden" ) ;
                        System.out.println();
                        personSuchen();
                        }
                System.out.println();
                menu();
                }

                catch (IOException ex)
                {
                System.out.println("Kein Name!");
                }
        }

        
        public void eintragAnlegen() {
              
                System.out.println("Zurueck zum Menue mit <quit>");
                System.out.print("Namen eingeben: ");
                try {
                String name = stdin.readLine();
                if (name.equals("quit"))
                        menu();
                System.out.print("Nummer eingeben: ");
                String nummer = stdin.readLine();
                telebuch.addElement(new Telefonlisteneintrag(name, nummer));
                int indexWo = telebuch.indexOf( new Telefonlisteneintrag( name, "") ) ;
                System.out.println(telebuch.elementAt(indexWo));
                System.out.println();
                System.out.println("Mit irgendeiner Taste zum Menue");
                name = stdin.readLine();
                System.out.println();
                menu();
                }
                catch(IOException ex) {
                System.out.println("Ungueltig!");
                }
        }

        public void eintragLöschen() {

                System.out.println("Zurueck zum Menue mit <quit>");
                System.out.print("Namen eingeben: ");
                try {
                String name = stdin.readLine();
                if (name.equals("quit"))
                        menu();
                int indexWo = telebuch.indexOf( new Telefonlisteneintrag( name, "") ) ;
                if (indexWo>=0)
                System.out.println( telebuch.elementAt( indexWo ) ) ;
                System.out.println();
                System.out.println("Loeschen? ja/nein");
                name = stdin.readLine();
                if (name.toLowerCase().equals("ja") || name.toLowerCase().equals("j"))
                        telebuch.removeElementAt(indexWo);
                else
                        menu();
                }
                catch (IOException ex) {
                System.out.println("Ungueltig!");
                }
        }

    public void nummerIdentifizieren() {

         System.out.println("Nummer suchen");
                System.out.println("Zurueck zum Menue mit <quit>");
                System.out.print("Nummer eingeben: ");
                try
                {
                   String nummer = stdin.readLine();
                        while(!nummer.equals("quit")) {
                             int indexWo = telebuch.indexOf( new Telefonlisteneintrag( nummer, "") ) ;

                             if ( indexWo >= 0 )
                              System.out.println( telebuch.elementAt( indexWo ) ) ;
                            else
                              System.out.println( nummer + " nicht gefunden" ) ;
                        System.out.println();
                        personSuchen();
                        }
                System.out.println();
                menu();
                }
                catch (IOException ex)
                {
                System.out.println("Kein Name!");
                }
        }


      public static void main ( String[] args) throws IOException {
  
        Telefonliste2 Telefonbuch = new Telefonliste2();

        Telefonbuch.menu();
      }

}

Das Programm läuft zwar, aber nur bedingt, da ich immer zwischendurch Fehlermeldungen erhalte, die sich auf Zeile 40 beziehen.
Kann mir jemand sagen, was ich falsch gemacht habe? Ich glaube ich sehe den Wald vor lauter Bäumen nicht mehr.
 

eRaaaa

Top Contributor
Das Problem liegt an deinen ganzen indexOf Aufrufen. Du rufst indexOf immer einfach mit einem neuen(was ja eig. nicht schlimm wäre wenn du equals entsprechend überschrieben hättest :D) Telefonlisteneintrag-Objekt auf welches keine Nummer hat ?! Das wird also kaum mit einem der Objekte matchen und somit gibt dir indexOf immer -1 zurück.
Beim Eintragen könntest du z.B. einfach
Java:
                Telefonlisteneintrag eintrag = new Telefonlisteneintrag(name, nummer);
                telebuch.addElement(eintrag);
                int indexWo = telebuch.indexOf(eintrag) ;
                System.out.println(telebuch.elementAt(indexWo));
//bzw hier natürlich eig. dann auch gar nicht mehr nötig, sich das mit indexOf/elementAt zu holen !!!!
schreiben.

Beim Löschen hast du ja zumindest versucht das -1 abzufangen, also wenn kein Name gefunden wurde..allerdings hast du da die Klammern vergessen, so dass sich nur die nächste Zeile darauf bezieht ;/
Beim Löschen bräuchtest du natürlich auch eine Referenz auf das Objekt. Oder eben zu dem Namen auch die Telefonnr, dann könntest du bei überschriebener equals auch wieder einfach ein neues Objekt erstellen und dann mit indexOf...
Ansonsten könntest du auch deinen Vector durchlaufen und den Namen vergleichen:
Java:
                Telefonlisteneintrag eintrag = null;
                for (Telefonlisteneintrag teleEintrag : telebuch) {
					if(teleEintrag.name.equals(name)){
						eintrag = teleEintrag;
					}
				}
                int indexWo = telebuch.indexOf(eintrag);
//bzw hier natürlich eig. dann auch gar nicht mehr nötig, sich das mit indexOf/elementAt zu holen !!!!

Ob da jetzt noch mehr Fehler sind habe ich nicht weiter geschaut, jedenfalls weißt du jetzt zumindest worans liegt :)
 
Zuletzt bearbeitet:

kitz

Mitglied
Also das mit dem eintragen klappt jetzt, danke..

Nur hab ich nach wie vor das Problem, dass er sozusagen einmal die methode durchläuft und wenn ich eine zweite Person eintragen möchte haut er mir wieder den Fehler mit Zeile 40 rein :(
genauso wenn ich punkt 1 gewählt habe und wieder ins menü gehe und dann einen anderen punkt anwähle geht der dann auch nicht mehr und ich krieg immer was zu der zeile:

int auswahl = Integer.parseInt(eingabe);
 

kitz

Mitglied
Wenn ich einmal die Methode alle Einträge anzeigen aufgerufen habe, dann wieder ins Menü gehe und dann Eintrag anlegen wähle kommt das hier:

Exception in thread "main" java.lang.NumberFormatException: For input string: "�"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.parseInt(Integer.java:499)
at Telefonliste2.menu(Telefonliste2.java:42)
at Telefonliste2.alleAnzeigen(Telefonliste2.java:80)
at Telefonliste2.menu(Telefonliste2.java:46)
at Telefonliste2.main(Telefonliste2.java:200)
Java Result: 1

und das hab ich bei jeder kombination von methoden..
sobald ich wieder im menü lande geht nix mehr

also hier sind es zeile 40 und 188 wo er meckert, wenn ich nach dem code von oben gehe ;)
 
Zuletzt bearbeitet:

kitz

Mitglied
aber bei richtiger eingabe funktioniert es ja auch nicht.. oder wirft er mir den fehler so oder so aus egal ob richtige eingabe oder falsche?
 

nrg

Top Contributor
nein da sollte das programm weiterlaufen. hab es grad mal weng getestet. ohne wirklich eine falscheingabe zu tätigen (!= quit und != 1 bis 5) konnte ich keine nfe erzeugen :(. glaube das problem ist weniger beim code zu suchen. lass dir mal deine ausgabe vor dem parse immer auf console ausgeben. vllt hast du capslock an? :)
 

eRaaaa

Top Contributor
Naja, man sieht ja schon welcher String dort ankommt --> "�"
Die Frage ist nur warum ^^

In welcher Konsole gibst du denn die Werte ein????:L
 

kitz

Mitglied
Also ich arbeite mit Netbeans und hab das da gestartet und über die konsole da laufen

ich verstehe nur nicht, warum die methoden ansich laufen, aber sobald ich erneut im menü bin geht nichts mehr...

ich weiß, ich strapaziere euch ;)

und capslock hab ich nicht an
 

kitz

Mitglied
zumindest ein teilerfolg.
hab in der tat das parsen rausgenommen und ne schleife gesetzt, dass er das menü durchläuft bis exit
nun geht das

allerdings kann er bei der methode person suchen die person nicht finden.. er springt automatisch auf person nicht vorhanden..
gleiches bei der nummer

und danke für eure geduld und hilfe ;)
 

nrg

Top Contributor
ja, das ist mir vorhin beim kurzen testen auch aufgefallen :). zeig mal deinen aktuellen code von personSuchen
 

kitz

Mitglied
Java:
  public void personSuchen() {

                System.out.println("Zurueck zum Menue mit <quit>");
                System.out.print("Namen eingeben: ");

                try {
                   String name = stdin.readLine();
                        while(!name.equals("quit")) {
                             int indexWo = telebuch.indexOf( new Telefonlisteneintrag( name, "") ) ;
                             if ( indexWo >= 0 )
                              System.out.println( telebuch.elementAt( indexWo ) ) ;
                            else
                              System.out.println( name + " nicht gefunden" ) ;
                        System.out.println();
                        personSuchen();
                        }
                System.out.println();
                menu();
                }

                catch (IOException ex)
                {
                System.out.println("Kein Name!");
                }
        }

wahrscheinlich hab ich mich wieder total verstrickt da und seh es wie immer nicht
 

kitz

Mitglied
stimmt ja.. hatte das wegen der anderen fehler wieder rausgenommen und vergessen wieder reinzunehmen...
heut hab ich meinen kopf aber auch am eingang abgegeben

ich probier das denn nochmal aus ;)
 

kitz

Mitglied
ja jetzt läuft das aber sowas von einwandfrei :applaus:

daaaaanke jungs *um den hals fall*

und wieder musste eRaaa seine Nerven hinhalten für mich :oops:
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Telefonbuch Java Basics - Anfänger-Themen 2
L Telefonbuch erstellen Java Basics - Anfänger-Themen 2
A Im Telefonbuch eine Tabelle ergänzen Java Basics - Anfänger-Themen 6
K Telefonbuch Implementation mit Java Collections Java Basics - Anfänger-Themen 4
M Telefonbuch problem Java Basics - Anfänger-Themen 13
P Telefonbuch (Console) Java Basics - Anfänger-Themen 8
M Telefonbuch Java Basics - Anfänger-Themen 3
J Telefonbuch entwickeln Java Basics - Anfänger-Themen 6
M Telefonbuch in einem Handy GUI! Java Basics - Anfänger-Themen 3
J Erste Schritte Alle möglichen ausgaben von 5 Zahlen als Vector Java Basics - Anfänger-Themen 7
C Werte im Vector in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 14
C Vector-Inhalt in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 6
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
J Reihenfolge im Vector lässt sich nicht drehen Java Basics - Anfänger-Themen 9
M Klassen Gesamt speicherbare Elemente in Vector? Java Basics - Anfänger-Themen 3
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
P Objekte in Vector werden überschrieben Java Basics - Anfänger-Themen 4
P Array in Vector speichern Java Basics - Anfänger-Themen 2
E Methoden new Vector().add(x).add(x); ? Java Basics - Anfänger-Themen 5
F Vector istGeordnet Java Basics - Anfänger-Themen 15
R Vector-Filterfunktion Java Basics - Anfänger-Themen 4
Todesbote Map (Key=String; Value = Vector) Value/Vector sortieren Java Basics - Anfänger-Themen 13
J Vector Manipulieren.. Wie? Java Basics - Anfänger-Themen 16
M Vector eines Vectors einzeln ausgeben Java Basics - Anfänger-Themen 9
K String kommt schon in Vector vor? Java Basics - Anfänger-Themen 36
J Erzeugung eines Vector-Objekts - Frage zum Typ Java Basics - Anfänger-Themen 3
H Zugriff auf Vector Element Java Basics - Anfänger-Themen 2
C Vector erzeugt neue Indizes nach Input Java Basics - Anfänger-Themen 2
A Author in Vector Java Basics - Anfänger-Themen 22
M Vector überschreibt Elemente bei add()-Methode Java Basics - Anfänger-Themen 10
T Elemente im Vector werden einfach überschrieben! Java Basics - Anfänger-Themen 3
K Collections Vector zu String casten Java Basics - Anfänger-Themen 4
U Wozu dient ein Vector in Java? Java Basics - Anfänger-Themen 6
S Vector mit beliebigen Klassen an Funktion übergeben Java Basics - Anfänger-Themen 20
B Globale vector? Java Basics - Anfänger-Themen 7
E 2 Dimensionaler Vector Java Basics - Anfänger-Themen 5
T Map<String, Vector>? Java Basics - Anfänger-Themen 11
P Collections Vector füllen in for-Schleife Java Basics - Anfänger-Themen 3
J Vector Addition Java Basics - Anfänger-Themen 5
M 2D Vector Java Basics - Anfänger-Themen 2
N IndexOutOfBoundsException: Source does not fit in dest beim Kopieren von ArrayList in Vector Java Basics - Anfänger-Themen 4
M Umwandlung von Array in Vector und umgekehrt Java Basics - Anfänger-Themen 6
E Datentypen Klasse Vector aus der Standard-API anwenden Java Basics - Anfänger-Themen 7
D Klasse Vector entwerfen Java Basics - Anfänger-Themen 7
A Arrays vs Liste vs Vector Java Basics - Anfänger-Themen 30
H in for Schleife über Vector iterieren Java Basics - Anfänger-Themen 2
S Datentypen Vector auslesen Java Basics - Anfänger-Themen 12
yampi Objektsammlung - Hashtable, Vector, Arrays Java Basics - Anfänger-Themen 8
T Vector-Positin anzeigen Java Basics - Anfänger-Themen 3
C Vector - obsolete collection Java Basics - Anfänger-Themen 1
C Vector<Object> Probleme Java Basics - Anfänger-Themen 38
C Datentypen Probleme mit Vector.contains() Java Basics - Anfänger-Themen 10
M Datentypen function(Vector<SuperClass>), Vector<Subclass> Java Basics - Anfänger-Themen 6
L Vector Sortieren Java Basics - Anfänger-Themen 8
B Vector in Table ersetzen Java Basics - Anfänger-Themen 4
B Werte einer Spalte aus DB in einen Vector schreiben Java Basics - Anfänger-Themen 15
E Arraylist mit Daten aus Vector füllen Java Basics - Anfänger-Themen 7
S Vector -> String JComboBox Java Basics - Anfänger-Themen 11
F Vector wird überschrieben Java Basics - Anfänger-Themen 8
T Vector sortiern Java Basics - Anfänger-Themen 7
C Frage zu Vector und muliplizieren des Inhaltes Java Basics - Anfänger-Themen 2
S Vector von eigenen Klassen Java Basics - Anfänger-Themen 2
J Collection Vector Java Basics - Anfänger-Themen 8
Streeber ArrayList/Vector, mehrdimensional Java Basics - Anfänger-Themen 11
N Was ist der Unterschied zwischen ArrayList und Vector? Java Basics - Anfänger-Themen 3
babel Einen Vector/Liste mit Daten prüfen Java Basics - Anfänger-Themen 31
B Hilfe zum einem Problem mit Vector Java Basics - Anfänger-Themen 8
H Vector - Fehler? Java Basics - Anfänger-Themen 2
babel einen Vector nach Datum sortieren Java Basics - Anfänger-Themen 21
T Array-Vector Problem Java Basics - Anfänger-Themen 18
P Vector und Exception Java Basics - Anfänger-Themen 7
K Vector Java Basics - Anfänger-Themen 3
K Vector Java Basics - Anfänger-Themen 10
babel ein Vector mit verschiedenen Werten auslesen und berechnen Java Basics - Anfänger-Themen 34
T Object aus Vector übergeben Java Basics - Anfänger-Themen 2
B Vector<Point> als Rückgabewert Java Basics - Anfänger-Themen 23
L Vector einem Array hinzufügen Java Basics - Anfänger-Themen 14
P Vector mit double Java Basics - Anfänger-Themen 3
P Vector Elemente auslesen Java Basics - Anfänger-Themen 9
N Anfängerfrage richtige Syntax und Frage zu Vector Java Basics - Anfänger-Themen 7
C Unterschied zwischen ArrayList und Vector Java Basics - Anfänger-Themen 2
W Vector mit String[] auslesen Java Basics - Anfänger-Themen 4
Povlsen84 Initlialisierung, Vector, serialVersionUID . kleine Fragen Java Basics - Anfänger-Themen 4
Q Vector verändert trotz final seine Größe Java Basics - Anfänger-Themen 5
B Dopplete aus Vector entfernen Java Basics - Anfänger-Themen 8
E Vector Fehler bei allen Methoden von Vector Java Basics - Anfänger-Themen 2
K Vector zu Array machen Java Basics - Anfänger-Themen 10
1 JList Problem : Synchronisation mit Vector klappt nicht :( Java Basics - Anfänger-Themen 6
L Multidimensional Vector - Recordset Java Basics - Anfänger-Themen 5
K Objektklasse mit leerem Vector füllen Java Basics - Anfänger-Themen 6
K Vector wird überschrieben Java Basics - Anfänger-Themen 7
G Vector Strijng parsen Java Basics - Anfänger-Themen 6
K vector cannot be resolved Java Basics - Anfänger-Themen 3
G Zeichenkette suchen in Vector-Klasse Java Basics - Anfänger-Themen 11
R fehler beim incrementellen schreiben in einen vector Java Basics - Anfänger-Themen 11
M ObjectInputStream, Object und Vector<Object> Java Basics - Anfänger-Themen 4
G Vector, equal & Casts Java Basics - Anfänger-Themen 5
N Objekte in einen Vector packen oder nicht? Java Basics - Anfänger-Themen 3
D Frage zu Vector Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben