ich brauche bitte eure Hilfe!!!
Es geht darum einen Vector zu realisieren, der viele Benutzer speichern kann und
dann zu testen mit Abfrage ob einen beliebigen Benutzer im Vector speichert ist oder nicht.
Java:
importjava.util.Vector;importjava.util.*;classBenutzerVerwaltungAdminimplementsBenutzerVerwaltung{// Aggregation der Klasse BenutzerBenutzer bnz =newBenutzer();// vect ist eine Referenz auf ein Vector-OjektVector<Benutzer> vect ;/**
* Diese Methode überprüft ob der Benutzer schon vorhanden ist: Falls der
* Benutzer vorhanden ist, geht der compiler in if(...) rein und liefert
* true sonst macht er einen Exception und liefert false
*/publicbooleanbenutzerOk(Benutzer bnz){boolean hilfe =true;try{if(vect.contains(bnz)){
hilfe =true;}}catch(Exception e){System.err.println("Fehler: Dieser Benutzer ist nicht vorhanden");
hilfe =false;}return hilfe;}}publicvoiddBInitialisieren(){}publicstaticvoid main (String[]args){// ich erzeuge 2 benutzer b1 und b2Benutzer b1 =newBenutzer("Anna","13zu3e".toCharArray());Benutzer b2 =newBenutzer("patrick","123".toCharArray());// Erzeugug eines Objets v : Dient zum EintragenVector<Benutzer> v =newVector<Benutzer>();// b1 wird im Vector gespeichert. b2 Aber nicht
v.addElement(b1);BenutzerVerwaltungAdmin test =newBenutzerVerwaltungAdmin();// ich möchte jetzt meine Methode benutzerOk(Benutzer bnz) testenSystem.out.println("Benutzer in Vector vorhanden? :"+test.benutzerOk(b1));System.out.println("Benutzer in Vector vorhanden? :"+test.benutzerOk(b2));}}
Warum klappt das nicht ???
Ich habe erwartet:
"true" für der erste System.out.println()
und
"Fehler: Dieser Benutzer ist nicht vorhanden" für den zweite System.out.println()
Guck dir die Methode Vector#contains in der API an... (das try-catch hat da nix zu suchen)
€dit: Wenn auch gleiche Benutzer als gleich anerkannt werden sollen anstatt nur diesselben Benutzer, dann müsstest du auch noch die equals-Methode in Benutzer überschreiben
Noch'n Tipp: Wenn du einen "allgemeinen" Fehler (etwa Exception) abfängst, solltest du schon den Stacktrace ausgeben (an dem man sehen kann, welcher Fehlertyp in welcher Zeile aufgetreten ist), statt rumzuraten, was eigentlich passiert ist, und eine "geratene" Fehlermeldung auszugeben.
Guck dir die Methode Vector#contains in der API an... (das try-catch hat da nix zu suchen)
€dit: Wenn auch gleiche Benutzer als gleich anerkannt werden sollen anstatt nur diesselben Benutzer, dann müsstest du auch noch die equals-Methode in Benutzer überschreiben
Aber ich dachte contains soll in der lage sein zu prüfen ob ein objekt in der vector enhalten ist oder nicht !? Das Problem ist: Vect.contains(b1) macht den Exception obwohl b1 in der Vector enthalten ist.
Wenn ich die equals methode schreibe, wozu nutzt mir denn den Vector?
Noch'n Tipp: Wenn du einen "allgemeinen" Fehler (etwa Exception) abfängst, solltest du schon den Stacktrace ausgeben (an dem man sehen kann, welcher Fehlertyp in welcher Zeile aufgetreten ist), statt rumzuraten, was eigentlich passiert ist, und eine "geratene" Fehlermeldung auszugeben.
Falls du die Aussage auf Vector#contains beziehst:
Was soll das den? Lest doch bitte mal die API durch bevor ihr sowas behauptet. contains returnt einen boolean!
Insgesamt ist die ganze benutzerOk des TO unnötig, du kannst einfach immer contains benutzen...