|
| Begynderproblem med metodes returværdi Fra : Ukendt |
Dato : 01-11-04 14:59 |
|
Hej alle,
Jeg har et array med index 0-20 samt en metode der skal returnere en af
objekterne (kaldet "Opgave") fra Arrayet.
Metoden ser således ud:
public Opgave hentOpg(int opgaveID)
{
if (opgaveID >= 0 && opgaveID <= 20) {
return opgaveliste[opgaveID];
} else {
return "Opgaven med id " + opgaveID + " findes ikke";
}
}
Problemet er at jeg i forbindelse med tjekket på om parametren opgaveID
ligger fra 0-20, får forskellige returværdier. Metoden forventer et
opgaveobjekt som returværdi, og jeg kan derfor ikke få lov at udskrive min
fejlmeddelelse, hvis opgaveID har en invalid værdi.
Er der nogen måde at omgås dette på, eller findes der en slags "break;"
statement der duer i if-sætninger?
| |
Søren Berg Glasius (01-11-2004)
| Kommentar Fra : Søren Berg Glasius |
Dato : 01-11-04 15:29 |
|
<-= KG =-> wrote:
Hej KG
>
> public Opgave hentOpg(int opgaveID)
> {
> if (opgaveID >= 0 && opgaveID <= 20) {
> return opgaveliste[opgaveID];
> } else {
> return "Opgaven med id " + opgaveID + " findes ikke";
> }
> }
'
Du kan ikke returnere to forskellige objekt-typer fra en funktion, med
mindre de begge er nedarvet fra samme objekt (F.eks. Object)
I stedet for at returnere en String, er det nok bedre at kaste en Exception,
f.eks. ArrayIndexOutOfBoundsException
så ovenstående kunne være:
public Opgave hentOpg(int opgaveID)
{
if (opgaveID >= 0 && opgaveID <= 20) {
return opgaveliste[opgaveID];
} else {
throw new ArrayIndexOutOfBoundsException("Opgaven med id "
+ opgaveID + " findes ikke");
}
}
Da ArrayIndexOutOfBoundsException er en unchecked exception
(RuntimeException) behøves metoden ikke en 'throws' statement.
Håber det hjalp,
MVH
Søren
| |
Niels Dybdahl (01-11-2004)
| Kommentar Fra : Niels Dybdahl |
Dato : 01-11-04 15:33 |
|
> Jeg har et array med index 0-20 samt en metode der skal returnere en af
> objekterne (kaldet "Opgave") fra Arrayet.
> Metoden ser således ud:
>
> public Opgave hentOpg(int opgaveID)
> {
> if (opgaveID >= 0 && opgaveID <= 20) {
> return opgaveliste[opgaveID];
> } else {
> return "Opgaven med id " + opgaveID + " findes ikke";
> }
> }
>
> Problemet er at jeg i forbindelse med tjekket på om parametren opgaveID
> ligger fra 0-20, får forskellige returværdier. Metoden forventer et
> opgaveobjekt som returværdi, og jeg kan derfor ikke få lov at udskrive min
> fejlmeddelelse, hvis opgaveID har en invalid værdi.
>
> Er der nogen måde at omgås dette på, eller findes der en slags "break;"
> statement der duer i if-sætninger?
Senere vil du nok lære om try/throw/catch som man typisk ville bruge til
formålet. Indtil da kan du returnere værdien null når opgaven ikke findes og
udskrive fejlmeldingen enten fra funktionen eller der hvor funktionen kaldes
fra.
Niels Dybdahl
| |
|
|