Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Logg inn

Valgte tags:

Filtrering:

Skriv ut:

2.08: Feilmeldinger

Vi har gitt følgende program:

1 class Test {
2   public static void main(String[] args) {
3       int jens;
4       int siv = Jens * 3;
5       System.out.println("Svar: " siv);
6       erna = siv - jens;
7       System.out.printn(erna);
8   }

Prøv å kompilere programmet. Hva betyr følgende feilmeldinger, som kompilatoren spytter ut når vi prøver å
kompilere og debugge dette programmet?

a) Test.java:8: reached end of file while parsing
     }
      ^

b) Test.java:4: cannot find symbol
   symbol : variable Jens
   location: class Test
    int siv = Jens * 3;
              ^

c) Test.java:4: variable Jens might not have been initialized
    int siv = Jens * 3;
              ^

d) Test.java:5: ’)’ expected
    System.out.println("Svar: " siv);
                               ^
   Test.java:5: illegal start of expression
    System.out.println("Svar: " siv);
                                   ^

e) Test.java:6: cannot find symbol
   symbol : variable erna
   location: class Test
    erna = siv - jens;
    ^
f) Test.java:7: cannot find symbol
   symbol : method printn(int)
   location: class java.io.PrintStream
    System.out.printn(erna);
              ^

Hvis vi fjerner "{" (krøllparentesen) på linje 2 får vi ca. 10 nye feilmeldinger, bl.a. følgende.

g) Test.java:2: ’;’ expected
    public static void main(String[] args)
                                          ^
   Test.java:5: <identifier> expected
    System.out.println("Svar: " + siv);
                      ^
   Test.java:5: illegal start of type
    System.out.println("Svar: " + siv);
                        ^

Hva tipper du er grunnen til at så mange feilmeldinger forårsakes av bare denne enkle lille feilen?

Vis løsningsforslag

a) Denne feilen kommer av at man har glemt eller lagt til en krøllparantes for mye. Her mangler vi en krøllparantes for å lukke klassen.

b) og c) Kompilatoren finner ikke variabelen Jens. Dette er fordi vi på linje 3 har kalt den jens. Dette vil i Java bli sett på som to ulike variabler, og kan fikses ved å kalle begge variablene for jens.

d) Når vi har flere ting vi vil skrive ut i en printsetning må vi "legge" disse sammen ved å plusse de sammen. Løsningen her hadde vært å legge til et ekstra plusstegn, slik: System.out.println("Svar: " + siv);

e) Kompilatoren finner ikke variabelen erna, siden vi aldri har deklarert den. Kompilatoren må vite hvilken type variable erna er, og siden det står et regnestykke på høyreside av to heltall, er det naturlig å la erna være en variabel av typen int. Det hadde da blitt seende slik ut: int erna = siv - jens;

f) Her mangler vi l i println.

g) Grunnen til at det kommer så mange flere feil, er at man får flere følgefeil av den første kompilatorfeilen. En god huskeregel er alltid å rette kompileringsfeil først, og deretter kompilere på nytt. Gjenta helt til alle feilene er borte.