Anfänger86
Grünschnabel
Hallo, ich habe folgenden Code
eigentlich läuft das alles so wie es soll.
nur bei dem menüpunkt "eintrag löschen" habe ich ein problem.. ich kann ihn zwar die person die ich löschen will suchen lassen und sie wird auch gefudnen, aber wenn ich dann ja oder j eingebe zum bestätigen dann kriege ich eine fehlermeldung.
was habe ich falsch gemacht?
Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Enumeration;
import java.util.Vector;
public class Telefonliste {
// Deklaration BufferedReader zum Einlesen Eingabe von tastatur
public BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
public Vector<Telefonlisteneintrag> telefonliste; // Deklaration Vector telefonliste
public Enumeration num;
public Telefonliste() {
// neuer Vector vom Typ telefonliste, in dem Einträge gespeichert werden
telefonliste = new Vector();
telefonliste.addElement( new Telefonlisteneintrag( "Tina Müller ", "0451/598547"));
telefonliste.addElement( new Telefonlisteneintrag( "Klaus Fuchs ", "0587/45796"));
telefonliste.addElement( new Telefonlisteneintrag( "Silke Rommel ", "0587/578512"));
telefonliste.addElement( new Telefonlisteneintrag( "Franz Kluftlocher ", "0785/98745"));
}
public void menü(){
boolean fertig = false; // boolean zum Schleifendurchlauf des Menüs
while(!fertig) {
// Menü der Telefonliste
System.out.println("\nTelefonliste: ");
System.out.println("[1] Alle Eintraege anzeigen");
System.out.println("[2] Eintrag anlegen");
System.out.println("[3] Eintrag löschen");
System.out.println("[4] Eintrag bearbeiten");
System.out.println("[5] Person suchen");
System.out.println("[6] Nummer identifizieren");
System.out.println("[0] Ende\n");
try {
String eingabe = stdin.readLine(); // Einlesen der Tastatureingabe
if (eingabe.equals("0"))
System.exit(0); // wenn Eingabe 0, dann Programm beenden
// wenn eingabe wie im Menü, dannw erden die jeweiligen Methoden aufgerufen
if (eingabe.equals("1"))
alleAnzeigen();
if (eingabe.equals("2"))
eintragAnlegen();
if (eingabe.equals("3"))
eintragLöschen();
if (eingabe.equals("4"))
eintragBearbeiten();
if (eingabe.equals("5"))
personSuchen();
if (eingabe.equals("6"))
nummerIdentifizieren();
} // close try
catch (IOException ex) {
System.out.println("Fehler bei der Eingabe");
} // close catch
} fertig=false; // close while
} // close menü()
public void alleAnzeigen() {
if (!telefonliste.isEmpty()) { // wenn Vector telefonliste nicht leer ist
num = telefonliste.elements();
while( num.hasMoreElements() ) // so lange Einträge im Vector sind
System.out.println(num.nextElement() ); // werden Einträge ausgegeben
} // close if
else
System.out.println("Kein Eintrag vorhanden"); // wenn kein Eintrag vorhanden
System.out.println("\nTaste drücken"); // Zurück zum Menü
try {
String name = stdin.readLine(); // Eingabe von Tastatur einlesen
menü();
} // close try
catch(IOException ex) {
System.out.println("Fehler"); // gibt Fehler aus wenn Eingabe falsch
} // close catch
// ruft Methode menü auf
} // close alleAnzeigen()
public void eintragAnlegen() {
System.out.println("Zum Menü mit [0]"); // Hinweis zur Rückkehr zum Menü
System.out.print("Namen eingeben: "); // Aufforderung zur Namenseingabe
try {
String name = stdin.readLine(); // Einlesen der Tastatureingabe
if (name.equals("0")) // wenn Eingabe 0 ist, dann zurück zum Menü
menü();
System.out.print("Nummer eingeben: "); // Aufforderung zur EIngabe der Nummer
String nummer = stdin.readLine(); // Einlesen der Tastatureingabe
// neuen Telefonlisteneintrag erzeugen mit name und nummer
Telefonlisteneintrag eintrag = new Telefonlisteneintrag(name, nummer);
telefonliste.addElement(eintrag); // hinzufügen des Eintrags zum Vector
int indexW = telefonliste.indexOf(eintrag) ;
System.out.println ("\nBitte Taste drücken");
name = stdin.readLine(); // name einlesen
menü(); // zurück zum Menü
} // close try
catch(IOException ex) {
System.out.println("Fehler"); // Ausgabe Fehlermeldung bei Falscheingabe
} // close catch
} // close eintragAnlegen()
public void eintragLöschen() {
System.out.println("Zum Menü mit [0]"); // Hinweis zur Rückkehr zum Menü
System.out.print("Namen eingeben: "); // Aufforderung zur Namenseingabe
try {
String name = stdin.readLine(); // Eingabe von Tastatur einlesen
while(!name.equals("0")) {
if (name.equals("0")) // wenn eingabe gleich 0 ist, zurück zum Menü
menü(); // Aufruf der Methode menü()
Telefonlisteneintrag eintrag = null;
for (Telefonlisteneintrag teleEintrag : telefonliste) {
if(teleEintrag.name.equals(name)){
eintrag = teleEintrag;
} // close if
} // close for
int indexW = telefonliste.indexOf(eintrag);
if (indexW>=0) // wenn indexW größer gleich 0
System.out.println( telefonliste.elementAt( indexW)); // dann Eintrag bei indexW hinzufügen
System.out.println("Löschen? ja/nein"); // Eingabeaufforderung zum Bestätigen des Löschvorgangs
name = stdin.readLine(); //
if (name.toLowerCase().equals("ja") || name.toLowerCase().equals("j"))
telefonliste.removeElementAt(indexW); // wenn eingabe "ja" oder "j" entspricht löschen
else
menü(); // Aufruf der Methode menü()
} // close while
} // close if
catch (IOException ex) {
System.out.println("Fehler"); // Fehlermeldung bei Falscheingabe
} // close catch
} // close eintragLöschen()
public void eintragBearbeiten() {
System.out.println ("Zum Menü mit [0]"); // Hinweis zur Rückkerhr zum Menü
System.out.println ("Namen eingeben: "); // Aufforderung zur Namenseingabe
try {
String name=stdin.readLine(); // EIngabe von tastatur einlesen
if (name.equals("0")) // wenn Eingabe gleich 0, zurück zum Menü
menü(); // Aufruf der Methode menü()
Telefonlisteneintrag eintrag = null;
for (Telefonlisteneintrag teleEintrag : telefonliste) {
if(teleEintrag.name.equals(name)){
eintrag = teleEintrag; // eintrag ist gleich teleEintrag
} // close if
} // close for
int indexW = telefonliste.indexOf(eintrag);
if (indexW>=0)
System.out.println (telefonliste.elementAt (indexW));
else
System.out.println (name+ "nicht vorhanden"); // wenn name nicht in Vector
System.out.println ("Neuer Name: "); // Aufforderung zur Eingabe neuer Name
name= stdin.readLine(); // Einlesen der Eingabe von der Tastatur
System.out.println ("Neue Nummer: "); // Aufforderung zur Eingabe der neuen Nummer
String nummer=stdin.readLine(); // Einlesen der Eingabe von der Tastatur
telefonliste.removeElementAt (indexW); //Eintrag bei indexW zurücksetzen
// Eintrag bei indexW neu erstellen
telefonliste.insertElementAt (new Telefonlisteneintrag (name, nummer), indexW);
System.out.println ("Neuer Eintrag: "); // Auswerfen des neuen Eintrags
System.out.println (telefonliste.elementAt(indexW)); //übersenden neuer Eintrag
System.out.println ("\nBitte Taste drücken"); // Aufforderung zum Drücken einer Taste
name=stdin.readLine(); // EInlesen der Eingabe von der Tastatur
menü();
} // close try
catch (IOException ex) {
System.out.println ("Fehler"); // Fehlermeldung bei Falscheingabe
} // close catch
} // close Methode eintragBearbeiten()
public void personSuchen() {
System.out.println("\nZum Menü mit [0]"); // Hinweis zur Rückkehr zum Menü
System.out.print("Namen eingeben: "); // Aufforderung zur Eingabe eines Namens
try {
String name = stdin.readLine(); // Eingabe von der Tastatur einlesen
while(!name.equals("0")) { // so lange Eingabe nicht 0 ist
Telefonlisteneintrag eintrag = null; // eintrag ist gleich null
for (Telefonlisteneintrag teleEintrag : telefonliste) { // neuer Eintrag teleEintrag
if(teleEintrag.name.equals(name)){ // wenn die nummern gleich sind
eintrag = teleEintrag; // eintrag entspricht gleich teleEintrag
} // close if
} // close for
int indexW = telefonliste.indexOf(eintrag); // Position eintrag in Vector
if ( indexW >= 0 ) // wenn indexW größer gleich 0
// übertragen des Eintrags an Position indexW
System.out.println( telefonliste.elementAt( indexW));
else
System.out.println( name + " nicht vorhanden" ) ; // ansonsten nummer nicht vorhanden
personSuchen(); // Aufruf Methode personSuchen()
} // close while
menü(); // Aufruf der Methode menü()
} // close try
catch (IOException ex) {
System.out.println("Fehler"); // Fehlermeldung bei Falscheingabe
} // close catch
} // close Methode personenSuchen()
public void nummerIdentifizieren() {
System.out.println("\nZum Menü mit [0]"); // Hinweis zur Rückkehr zum Menü
System.out.print("Nummer eingeben: "); // Aufforderung zur Eingabe eines Namens
try {
String nummer = stdin.readLine(); // Einlesen der Eingabe von der Tastatur
while(!nummer.equals("0")) { // wenn eingabe nicht 0 ist
Telefonlisteneintrag eintrag = null; // eintrag ist gleich null
for (Telefonlisteneintrag teleEintrag : telefonliste) { // neuer Eintrag teleEintrag
if(teleEintrag.nummer.equals(nummer)){ // wenn die nummern gleich sind
eintrag = teleEintrag; // eintrag entspricht gleich teleEintrag
} // close if
} // close for
int indexW = telefonliste.indexOf(eintrag); // Postiton eintrag in Vector
if ( indexW >= 0 ) // wenn indexW größer gleich 0
// übertragen des Eintrags an Position indexW
System.out.println( telefonliste.elementAt( indexW ));
else
System.out.println( nummer + " nicht vorhanden" ) ; // ansonsten nummer nicht vorhanden
nummerIdentifizieren(); // Aufruf Methode nummerIdentifizieren()
} // close while
System.out.println();
menü();
} // close try
catch (IOException ex) {
System.out.println("Fehler");
} // close catch
} // close Methode nummerIdentifizieren
public static void main ( String[] args) throws IOException {
Telefonliste Telefonbuch = new Telefonliste(); // neues Objekt vom Typ Telefonliste
Telefonbuch.menü(); // Aufruf der Merhode menü() über Objekt Telefonbuch
} // close main-Methode
} // close class Telefonliste
eigentlich läuft das alles so wie es soll.
nur bei dem menüpunkt "eintrag löschen" habe ich ein problem.. ich kann ihn zwar die person die ich löschen will suchen lassen und sie wird auch gefudnen, aber wenn ich dann ja oder j eingebe zum bestätigen dann kriege ich eine fehlermeldung.
was habe ich falsch gemacht?