Return soll keinen Wert zurückgeben

Hallo,
ich habe ein Programm, welches Teilnehmerzahlen ermittelt. Nun habe ich eine Methode, die die Anzahl an Studenten errechnet werden, die ein Pflichtfach belegt haben.

Ich habe in meinem GUI ein TextField, dass sich bei der Wahl Pflichtfach erhöht, bei einer anderen Wahl jedoch nichts tut.

Hier einmal der relevante Auszug:
/**
* Anzahl der Teilnehmer bestimmen.
*/
public int getTeilnehmer()
{
Iterator it = klausurList.iterator();

int n = 0;
if(KlausurInfo.art == 0)
{
while (it.hasNext())
{
KlausurInfo m = (KlausurInfo)it.next();
n = n+m.getTeilnehmer();
}

return n;
}

else
{
return ???;
}
}

return n gibt demnach die neue Teilnehmerzahl der Studenten zurück, die ein Pflichtfach belegen. return ?? sollte bei mir „nichts“ zurückgeben, weiß aber leider nicht, was ich dort wählen soll. Vielleicht könnte mir einer Hilfestellungen geben?

Vielen Dank im Voraus.

Gruß MM

return ?? sollte bei mir „nichts“ zurückgeben

Wie wäre es mit „return 0;“?

Gruss
McPringle

hallo

sieht eher nach einem konzeptionellen problem aus. die methode dürfte eigentlich gar nicht aufgerufen werden, d.h. der aufrufer muss sicherstellen, dass er die methode nur aufruft, wenn sinnvolle werte zurückkommen. denn egal was auch immer du zurückgibst, der aufrufer muss das ergebnis interpretieren können.

wenn zu diesem zeitpunkt ein aufruf überhaupt keinen sinn ergibt, kann man z.b. eine IllegalStateException werfen - dann erkennt man sofort, dass da irgendwo ein Programmfehler sein muss und arbeitet nicht mit ev. falschen Daten weiter.

ist ja auch logisch so: der aufruf ist nicht vorgesehen, daher ist ein solcher ein ausnahmefall - also eine exception.

ansonsten - wenn mans schon unbedingt haben will. andere helfen sich damit, dass sie die wertemenge klar definieren. eine methode zum zählen von irgendwas kann nun mal nur 0 oder positive werte haben. man kann dann definieren, dass -1 bedeutet, dass der aufruf sinnlos war, -2 dass ein fehler aufgetreten ist, -3 dass rechte fehlen etc. zumindest die guten alten prozeduralen programme arbeiten oft so (v.a. die, die kein exception-handling kennen). Java ist immerhin so nett, dass es einem auch die gute alte prozedurale spaghetti-code programmierweise ohne einen hauch von objektorientierung zulässt und es trotzdem funktioniert.

lg
erwin

return ?? sollte bei mir „nichts“ zurückgeben

Wie wäre es mit „return 0;“?

Es gibt für solche Probleme leider keinen Standard. Manche Methoden geben in Fehlerfällen ‚0‘ zurück, andere ‚-1‘, oder es wird eine Exception geworfen. Wie du es löst, hängt von deinem Stil ab.

Grüße, Keks

Hallo,
danke für die zahlreichen Antworten. Mit return 0; habe ich es schon probiert. Dann zählt er bei „Pflichtfach“ entsprechend rauf beispielsweise auf 200, so wie ich es haben möchte. Anstatt bei „Wahlfach“ dann nicht zu zählen, setzt der eine 0 und verwirft die 200.

Grüße