-
28.06.10 13:05 #1
- Registriert seit
- Jun 2010
- Beiträge
- 14
Hallo, ich habe folgenden Code
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238
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?
-
28.06.10 15:42 #2
Moin,
beachte Bitte die Netiquette http://www.tutorials.de/index.php?pg=netiquette !!
Da Du nicht geschrieben hast, was genau Dein Problem ist resp. welchen Du Fehler Du bekommst!
Von daher kann ich jetzt nur spekulieren ....
Zuerst einmal würde ich dran gehen und die Funktion "eintragLöschen()" in "eintragLoeschen()" umbennen !!
Gruß
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
28.06.10 18:45 #3
- Registriert seit
- Jun 2010
- Beiträge
- 14
oh, wieso hab ich was falsch gemacht?
also meine fehlermeldung ist diese hier:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: -1
at java.util.Vector.removeElementAt(Vector.java:515)
at Telefonliste.eintragLöschen(Telefonliste.java:136)
at Telefonliste.menü(Telefonliste.java:59)
at Telefonliste.eintragAnlegen(Telefonliste.java:108)
at Telefonliste.menü(Telefonliste.java:57)
at Telefonliste.main(Telefonliste.java:246)
Java Result: 1
-
28.06.10 18:53 #4
Ohne mir das genauer anzuschauen, würde ich mal sagen, es trifft genau das zu was in der Exception steht: Du versuchst auf das Feld -1 eines Arrays zuzugreifen, was nicht geht, da die validen Felder eines Arrays 0 - (n - 1) sind.
Mein kleiner webstart Projektplaner:
http://178.77.101.236/ppws/
Ideen, Verbesserungsvorschläge, Bugsmeldungen und allg. Kritik erwünscht und erbeten.
Danke. :)
-
28.06.10 19:05 #5
- Registriert seit
- Jun 2010
- Beiträge
- 14
und wie kann ich das dann ändern? ich hab das vor 7 wochen programmiert und heute da nochmal reingeguckt und nu geht es net mehr.. und ich könnte schwören damals ging das... merkartig...
-
Was daran liegt, dass du indexW unabhängig davon verwendest ob IndexOf einen korrekten Wert zurückgegeben hat:
/Edit: Das ist nicht die Lösung hier, sondern einfach bisschen formatiert was du geschrieben hast.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13
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
Bisschen übersichtlichere Programmieren würde ich dir auch anraten
Geändert von Cromon (28.06.10 um 19:13 Uhr)
-
28.06.10 19:11 #7
Nur weil ein Zustand funktioniert heißt das nicht, dass es ein anderer auch tut.
Setz nen Breakpoint in der Zeile wo du auf das Array zugreifst, schau im Debuger was die Variable die das Feld angibt enthält (weil ich nicht glaube das du meinen Post verstanden hast, sonst wärst du schon an der Fehlersuche/korrektur), und gehe zeilenweiße rückwärts, bis du raus hast wo die Variable falsch gesetzt wird.Mein kleiner webstart Projektplaner:
http://178.77.101.236/ppws/
Ideen, Verbesserungsvorschläge, Bugsmeldungen und allg. Kritik erwünscht und erbeten.
Danke. :)
-
28.06.10 19:32 #8Code java:
1 2 3 4 5 6 7 8 9 10
//... int indexW = telefonliste.indexOf(eintrag); if (indexW>=0) System.out.println (telefonliste.elementAt (indexW)); else //... telefonliste.removeElementAt (indexW); //Eintrag bei indexW zurücksetzen // Eintrag bei indexW neu erstellen telefonliste.insertElementAt (new Telefonlisteneintrag (name, nummer), indexW); //...
Also gehen wir das mal durch....
Du suchst einen Eintrag... Wenn er ihn findet, gibt er ihn aus, weil indexW positiv (größer/gleich 0)... Wenn er ihn nicht findet (indexW ist -1), dann willst du ein Element bei -1 entfernen und ein Element bei -1 hinzufügen?!Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
28.06.10 19:59 #9
- Registriert seit
- Jun 2010
- Beiträge
- 14
öhm, da steht doch garnichts von insertElementAt....
wenn er den eintrag findet soll er fragen "soll das gelöscht werden? ja/nein"
und bei der eingabe ja/j soll er den eintrag löschen...
wenn ich nein eingebe geht er ins menü wie er es soll... bei ja hängt er sich dann auf..
und kai, nein ich habe deinen post nicht verstanden...
-
-
28.06.10 20:13 #11
- Registriert seit
- Jun 2010
- Beiträge
- 14
tut mir leid, ich verstehe nur bahnhof.. wenn mein indexW kleiner als 0 ist dann geht er doch ins menü, mehr nicht...
die letzten beiträge hab ich net ansatzweise verstanden insbesondere den von HonniCilest....
na vielleicht sollten wir es dabei belassen, ich steige grad überhaupt net mehr durch...
-
28.06.10 20:17 #12
In Post #6 wird das Element ausgegeben, wenn die Variable größer oder gleich 0 ist, aber die Abfrage kommt trotzdem, egal welchen Wert sie hat. Das Menü wird erst angezeigt, falls etwas anderes als "ja" oder "j" in beliebiger Case eingegangen ist.
Mein kleiner webstart Projektplaner:
http://178.77.101.236/ppws/
Ideen, Verbesserungsvorschläge, Bugsmeldungen und allg. Kritik erwünscht und erbeten.
Danke. :)
-
28.06.10 20:25 #13
- Registriert seit
- Jun 2010
- Beiträge
- 14
ergo es fehlen ein paar klammern um das ganz von einander abzugrenzen... nun geht das

verstanden habe ich das von HonniCilest trotzdem nicht....
-
28.06.10 20:37 #14
Ich habe mir den Source noch immer nicht angeschaut (und werde es mit allen mir zu verfügung stehenden Mitteln verhindern), aber du löscht ein Element und fügst ein anderes an die selbe Stelle ein. Das ginge viel einfacher mit set().
Mein kleiner webstart Projektplaner:
http://178.77.101.236/ppws/
Ideen, Verbesserungsvorschläge, Bugsmeldungen und allg. Kritik erwünscht und erbeten.
Danke. :)
-
28.06.10 20:44 #15
- Registriert seit
- Jun 2010
- Beiträge
- 14
ahhhh, nein ich füge doch überhaupt nix ein.. da steht nix mit insertElementAt.... überhaupt nix.. ich lösche doch nur raus wenn mit ja bestätigt wird...
Ähnliche Themen
-
Fehler suchen - Registrierung
Von oldputz1990 im Forum PHPAntworten: 12Letzter Beitrag: 23.06.07, 17:11 -
Fehler suchen....
Von oldputz1990 im Forum PHPAntworten: 5Letzter Beitrag: 20.05.07, 20:35 -
Wo muss ich hier den Fehler suchen
Von son gohan im Forum PHPAntworten: 19Letzter Beitrag: 09.01.06, 13:15 -
Problem beim Suchen
Von disear im Forum PHPAntworten: 1Letzter Beitrag: 27.03.03, 14:40 -
Suchen in Mysql ergibt Fehler
Von mageDSA im Forum PHPAntworten: 8Letzter Beitrag: 02.09.02, 16:33



9Danke

Zitieren

Login





