Moin ich lerne java und habe wieder mal ein Problem-.-.
Mein Code:
Java:
publicvoidzeigeKundeAn(long kundennummer)//throws BankException{for(int i =0; i < kunden.size(); i++){if(kunden.get(i).getKundenNummer()==(long)kundennummer){Kunde kunde =null;
kunde = kunden.get(i);System.out.println("Kundennummer: "+kunde);break;}else{System.out.print("Kein Kunden unter dieser Kundennummer: "+ kundennummer +" gefunden.");}}}
Mein aufruf:
Java:
bank.zeigeKundeAn((long)10000);
Ich hoffe das reicht euch, mein Problem ist das ich beides ausgegeben bekomm die Fehlermeldung und mein Kunden. :S ich habe den Kunden in einer Arraylist gespeichert.
Wäre nett wenn ihr mir helft.
publicvoidzeigeKundeAn(long kundennummer)//throws BankException{for(int i =0; i < kunden.size(); i++){if(kunden.get(i).getKundenNummer()==(long)kundennummer){Kunde kunde =null;
kunde = kunden.get(i);System.out.println("Kundennummer: "+kunde);return;}}System.out.print("Kein Kunden unter dieser Kundennummer: "+ kundennummer +" gefunden.");}
Was passiert dort:
Die Schleife iteriert über alle Kunden. WENN er einen findet druckt er diesen aus und Beendet sofort die ganze Methode (returnt aus dieser). Fals er KEINEN findet passiert natürlich garnichts in der Schleife, er kommt aus der Schleife raus und printet die Fehlermeldung.
BTW:
Java:
Kunde kunde =null;
kunde = kunden.get(i);System.out.println("Kundennummer: "+kunde);
Ist unnötige Schreibarbeit...
Java:
Kunde kunde = kunden.get(i);System.out.println("Kundennummer: "+kunde);
Du könntest vor der Schleife eine boolean auf auf false setzen.
Wenn der Kunde beim Durchlauf der Schleife gefunden wird, dann setzt du die auf true.
Nach der Schleife gibst du dann eine Fehlermeldung aus, wenn die boolean immernoch auf false steht.
Ja ok so eine Sache mit der Schreibarbeit . Ich habe halt gedacht wenn er einen kunden mit der Kundennummer gefunden hat soll er ein break; machen. Marcinek hat mir ja eben schon gesagt woran es liegt wuste nicht wie ich das umgehe. :S
Ja ok so eine Sache mit der Schreibarbeit . Ich habe halt gedacht wenn er einen kunden mit der Kundennummer gefunden hat soll er ein break; machen. Marcinek hat mir ja eben schon gesagt woran es liegt wuste nicht wie ich das umgehe. :S
Natürlich, das Break bricht den Schleifendurchlauf ab. Allerdings bekommst du Trotzdem die Fehlermeldung 2 mal, wenn z.B. erst der dritte Kunde ein Treffer ist da Durchlauf 1 und 2 ja in den else-Zweig kommen.
Merk dir, wenn du nach etwas in einer Schleife "suchst", dann stecke die Fehlermeldung NIEMALS in die Schleife sondern erst danach.
Warum gibst Du nicht den Kunden zurück und bekommst entweder null oder den Kunden!?
dann kannst Du mit dem vorhanden Kunden alles mögliche machen.
Java:
publicKundezeigeKundeAn(long kundennummer)//throws BankException{Kunde kunde =null;for(int i =0; i < kunden.size(); i++){if(kunden.get(i).getKundenNummer()==(long)kundennummer){
kunde = kunden.get(i);break;}}return kunde;}
Warum gibst Du nicht den Kunden zurück und bekommst entweder null oder den Kunden!?
dann kannst Du mit dem vorhanden Kunden alles mögliche machen.
Java:
publicKundezeigeKundeAn(long kundennummer)//throws BankException{Kunde kunde =null;for(int i =0; i < kunden.size(); i++){if(kunden.get(i).getKundenNummer()==(long)kundennummer){
kunde = kunden.get(i);break;}}return kunde;}
Was er letztendlich mit den Kunden macht ist ja seine Sache... und ein long braucht immernoch nicht zu einem long gecastet werden.
Java:
publicKundezeigeKundeAn(long kundennummer){for(int i =0; i < kunden.size(); i++)if(kunden.get(i).getKundenNummer()==kundennummer)return kunden.get(i);returnnull;}
Ok TKausL das werde ich mir merken, ja ist einiges komisch ich hatte die Fehlermeldung nur einmal bekommen und den Kunden, obwohl ich 3 Kunden habe. Aber jetzt funktionierts. Ich habe ja eigentlich schon eine funktion mit findeKunde und darüber wollte ich den kunden auch suchen aber da habe ich momentan noch meine Probleme das er mir bei der funktion "findeKunde" ein kundenobjekt zurück gibt. Und bei "zeigeKundeAn" ein long übergeben. Da muss ich noch bischen zu lernen, deswegen löse ich das erstmal so.