/**
* Sucht den Namen eines Kunden durch Angabe der KundenID.
* @param kundenID KundenID
* @return gibt den Kunde zurück.
* @throws KundeNotFoundException
*/
public Kunde sucheKundeDurchKundenID(int kundenID) throws KundeNotFoundException
{
for (int i=0; i<kundendatenList.size(); i++)
{
Kunde tempKunde = (Kunde) kundendatenList.get(i);
int tempKundenID = tempKunde.getKundenID();
if (kundenID == tempKundenID)
{
return tempKunde;
}
else
{
throw new KundeNotFoundException("Der Kunde befindet sich nicht im " +
"Datenbestand.");
}
}
}
mein problem: im moment ist der code noch nicht ok, da gefordert wird, dass die methode "Kunde" zurückgibt.
was genau muss ich hier noch hinzufügen? komm grad einfach nicht drauf...
ja, du lieferst zwar in der for schilefe etwas zurück, was ist aber wenn die for schilefe gar nicht ausgeführt wird? da muss am ende der methode noch ein return null; z.b. hin
edit: ersta, aba daran hab ich gar nich gedacht, ich liefer bei sowas immer null zurück :?
edit2: hehe
Überleg mal was passiert, wenn die Liste leer ist...
Setz das "throw"-Statement besser ganz ans Ende der Schleife, innerhalb der Schleife wird es schon aufgerufen, wenn nur der erste Kunde nicht passt.
(Am besten, du lässt das throw weg: "return null" ist ebenso aussagekräftig, und nur weil mal was nicht gefunden wird, muss man ja nicht gleich Halari schreiben (und Exceptions herumwerfen)).
wusste bisher gar nicht, dass man einfach "return null" machen kann.
habe nun noch ein problem. folgende methode funktioniert bisher, allerdings möchte ich nun statt dem komplett namen nur einen namesbestandteil nutzen.
gibt es da eine sinnvolle methode, die ich hier benutzen kann? oder wie überprüfe ich, ob ein namensbestandteil in einem namen drin ist?
hier der code der methode:
Code:
public Kunde sucheKundeDurchNamensbestandteile(String namensbestandteil)
throws KundeNotFoundException
// evtl mehrere namensbestandteile, zb ..rian.. .eie. ???
{
for (int i=0; i<kundendatenList.size(); i++)
{
Kunde tempKunde = (Kunde) kundendatenList.get(i);
if (tempKunde.getName().equals(namensbestandteil) ||
tempKunde.getVorname().equals(namensbestandteil))
{
return tempKunde;
}
}
throw new KundeNotFoundException();
//return null;
}
ich habe es jetzt auch noch so probiert, mit regionMatches, aber das klappt auch noch nicht richtig ?!?
habe zwei kunden im testprogramm erstellt, er gibt mir dann aber immer den ersten aus, egal welchen "namensteil" ich angebe...
Das liegt vermutlich am Strichpunkt direkt hinter dem if. So wird nämlich wenn die Bedingung wahr ist eine leere Anweisung "ausgeführt". Die return-Anweisung steht ausserhalb des if und wird damit gleich beim ersten Schleifendurchlauf ausgeführt.