Avatar billede mholst Nybegynder
06. december 2002 - 09:33 Der er 17 kommentarer og
1 løsning

if sætning i metoden

Der er noget vi ikke kan forstå. Hvorfor siger programmet at det ikke kan nå if-sætningen:

public Login loginTest(String skrivLoginOrd, String skrivPassOrd)
        throws SQLException {
        String query =
            "select login, password, navn from PROFIL where Login like\""
                + skrivLoginOrd
                + "\"";

        System.out.println(query);
        ResultSet rs = stmt.executeQuery(query);

        while (rs.next()) {
            l = rs.getString("login");
            p = rs.getString("password");
            String n = rs.getString("navn");
            System.out.println("LOGINTEST:" + l + p + n);

       
        }
        return new Login(l, p);
       
        if (((skrivLoginOrd.toString().equalsIgnoreCase(l)) == true)
            && ((skrivPassOrd.toString().equalsIgnoreCase(p)) == true)) {
            hentImmunAfd();
        }
    }
håber I han komme med en god forklaring...tak
Avatar billede christian-petersen Nybegynder
06. december 2002 - 09:35 #1
Fordi du returnere lige inden...
Avatar billede christian-petersen Nybegynder
06. december 2002 - 09:36 #2
Retunerer...
Avatar billede ng-km Nybegynder
06. december 2002 - 09:36 #3
Fordi du har et return lige foran din if...

Hvis du returnerer før din if kan den jo ikke blive kørt.
Avatar billede riversen Nybegynder
06. december 2002 - 09:40 #4
return-statements skal ALTID være det sidste i en metode.
Avatar billede arne_v Ekspert
06. december 2002 - 09:45 #5
Din if sætning kan aldrig blive udført, da der er en
return lige inden.

Der er en syntax fejl i Java og det fortæller
compileren.

return behøver ikke nødvendigvis at være til sidst
i en metode, men hvis den er længere oppe skal der
være mulighed for ikke at udføre den.

void x(int a) {
    return;
    System.out.println(a);
}

giver fejl.

void x(int a) {
    if(a<0) return;
    System.out.println(a);
}

er legalt.
Avatar billede disky Nybegynder
06. december 2002 - 09:46 #6
Du har:
      return new Login(l, p);
       
        if (((skrivLoginOrd.toString().equalsIgnoreCase(l)) == true)
            && ((skrivPassOrd.toString().equalsIgnoreCase(p)) == true)) {
            hentImmunAfd();

Før din 'if' har du en return sætning, som gør at man forlader metoden, alt der står efter 'return' og inden et eventuelt } kan aldrig blive udført, da man har forladt metoden på det tidspunkt

Byt rundt på return og if, så skulle det virke bedre :)


riversen:
Man kan sagtens have kode efter en return, bare ikke i samme {} scope.
Avatar billede riversen Nybegynder
06. december 2002 - 09:51 #7
disky: ja, men den sidste linie i en metode vil altid være et return-statement.

formulerede mig nok lidt forkert.
Avatar billede arne_v Ekspert
06. december 2002 - 09:55 #8
Hvis du tæller en implicit return i en void metode
med: ja.
Avatar billede disky Nybegynder
06. december 2002 - 09:59 #9
riversen:

Nix du kan sagtens have en metode uden en return

void lavIngenTing(int x,int y)
{
int z=x+y)
}
Avatar billede riversen Nybegynder
06. december 2002 - 10:15 #10
disky: så vidt jeg ved sætter java en return; ind automatisk

implicit som arne_v skriver
Avatar billede riversen Nybegynder
06. december 2002 - 10:15 #11
disky: men ellers burde du være klar over at forudsætningen selvfølgelig er at metoden returnerer noget
Avatar billede disky Nybegynder
06. december 2002 - 10:29 #12
som du selv siger du formulerede dig lidt utydeligt :)

Compileren går det, men vi behøver ikke at gøre det.
Avatar billede disky Nybegynder
06. december 2002 - 12:27 #13
fair fordeling af point, 2 korrekte svar afgivet med 30 sekunders mellemrum, så de 2 skribenter har ikke set hinandens svar før bagefter.
Og du giver alt til den første af dem, istedet for som er almindelig kotume at dele dem, specielt når du giver så store mængder point for lette spørgsmål.
Avatar billede disky Nybegynder
06. december 2002 - 12:29 #14
Hvilket man kan se du altid gør hvis man kigger på dine spørgsmål.
Avatar billede ng-km Nybegynder
06. december 2002 - 21:19 #15
Hvad med dem der har svaret rigtigt allerførst(med 40 sek imellem), der var jo ikke i spørgsmålet lagt op til yderligere forklaring. Hvordan skal man så vide hvad DU vil vide........
Avatar billede disky Nybegynder
06. december 2002 - 21:31 #16
ng-km:
Hvad mener du ?

Han skrev:
håber I han komme med en god forklaring...tak
Avatar billede ng-km Nybegynder
07. december 2002 - 09:21 #17
Hvad er en god forklaring på at man har en return lige foran en if. Ved man ikke som Java-programmør at return slutter/stopper en sekvens, hvorfor sætter man den så ind. Jeg var overbevist om at det var en "overset" fejl. Man kan jo stirre sig blind på selv den simpleste kode.

Men okay, jeg har selv meget at lære, og er absolut ikke ude på at spille smart. At dele så mange point ud på sådanne spørgsmål, burde selvfølgelig have givet mig et praj om at der stak mere under, men jeg mener stadigvæk at de to første svar der er givet burde dække spørgsmålet.
Avatar billede disky Nybegynder
07. december 2002 - 10:35 #18
De to første svar giver ikke en god forklaring på det.

Personen der stillede dette spørgsmål giver altid mange point af en eller anden årsag.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester