/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
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



Søg
Reklame
Statistik
Spørgsmål : 177458
Tips : 31962
Nyheder : 719565
Indlæg : 6408170
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste