webForumDet fria alternativet

Nybörjare med java

1 svar · 1 832 visningar · startad av andenwee

andenweeMedlem sedan apr. 201110 inlägg
#1

Hej jag försöker skriva ett program där man skall fylla i ett antal provresultat.
Först skall man välja hur många prov man skall rätta och sen skriva in resultat för varje prov men jag fastnar på ett ställe när jag gör arrayer. Programmet funkar bra om jag väljer ett bestämt antal prov som skall rättas. Men när jag använder mig av variabeln antalprov för hur många arrayer som skall skapas och prov som skall rättas då funkar det inte.

Så här ser koden ut.


public static void main(String[] args) {
        
       Scanner sc = new Scanner(System.in);
       int antalProv;
       System.out.println("Hur många prov skall du rätta?");
       antalProv = sc.nextInt();
       
       int[] prov;
        prov = new int[antalProv];
       
       for (int i = 1; i <= antalProv; i++) {
           System.out.println("Mata in resultat " + i);
           prov[i] = sc.nextInt();
       }
       
       
    }

Då får jag detta meddelande.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at betyg.Betyg.main(Betyg.java:34)
Java Result: 1

metalboyMedlem sedan jan. 2005953 inlägg
#2

Sista körningen av for-loopen kommer att misslyckas eftersom en arrays index börjar på 0, inte 1. prov[antalProv] existerar alltså inte.

Testa att ändra till detta så tror jag att det går bättre

for (int i = 0; i < antalProv; i++) {
   System.out.println("Mata in resultat " + (i+1));
   prov[i] = sc.nextInt();
}
131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)