Uitzondering in thread “main” java.lang.ArrayIndexOutOfBoundsException

Ik ben een beginner in programmeren. Ik ben een paar weken bezig met mijn eerste programmeerles, dus heb even geduld. Ik ben niet iemand die om hulp vraagt, dus ik heb uitgebreid naar een antwoord gezocht zonder geluk. Dit is ook de eerste keer dat ik iets op een forum plaats, dus als mijn vragenstructuur niet klopt, dan spijt het me en ik zal corrigeren voor toekomstige berichten.

Dit is de vraag die ik aanpak:

Schrijf een programma dat een array “alpha” declareert van 50 elementen van het type “double”. Initialiseer de array zodat de eerste 25 elementen gelijk zijn aan het kwadraat van de indexvariabele en de laatste 25 elementen gelijk zijn aan driemaal de indexvariabele. Voer de array uit zodat 10 elementen per regel worden afgedrukt.

Dit is wat ik kreeg tijdens het uitvoeren van het programma.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:50 on line 23 

En dit is de code waar ik aan werk

import java.util.*;
import java.lang.*;
public class ProgrammingProblem5_4
{
    public static void main(String[] args)
    { 
        int i=0;
        int count=0;
        double[] alpha = new double[50];
        if (i >= 25)
            alpha[i] = 3*i;
        System.out.print(alpha[i]+ " ");   
        count++;
        if (count==10) {
            System.out.println("/n");
            count=0;
        }
    }
}
}

Bij voorbaat dank voor alle hulp. Ik wil dit niet voor mij laten doen, ik zit gewoon vast en heb hulp nodig om mijn weg te vinden.


Antwoord 1, autoriteit 100%

ik zie geen for-lus om de variabelen te initialiseren. Je kunt zoiets als dit doen.

for(i=0;i<50;i++){
 /* Code which is necessary with a simple if statement*/
   }

Antwoord 2

Eerst moet je leren over loops, in dit geval is de forloop het meest geschikt. Laten we bijvoorbeeld de hele tabel initialiseren met toenemende waarden beginnend met 0:

final int SIZE = 10;
int[] array = new int[SIZE];
for (int i = 0; i < SIZE; i++) {
    array[i] = i;
}

Nu kunt u het wijzigen om uw tabel te initialiseren met waarden volgens uw toewijzing.
Maar wat gebeurt er als je voorwaarde i < SIZEmet i < 11? Welnu, u krijgt IndexOutOfBoundExceptionals u (op een bepaald moment) probeert toegang te krijgen tot een object onder index 10, maar de hoogste index in een array van 10 elementen is 9. Dus u probeert, met andere woorden , om het huis van een vriend te vinden met nummer 11, maar er zijn slechts 10 huizen in de straat.

In het geval van de code die je hebt gepresenteerd, wel, er moeten er meer zijn, omdat je deze fout (uitzondering) van die code niet kunt krijgen.


Antwoord 3

ArrayIndexOutOfBoundsExceptionin eenvoudige woordenis -> je hebt 10 leerlingen in je klas (int array size 10) en je wilt de waarde van de 11e leerling zien (een leerling die niet bestaat)

als je dit int i[3] maakt, dan neemt i de waarden i[0] i[1] i[2]

probeer voor uw probleem deze codestructuur

double[] array = new double[50];
    for (int i = 0; i < 24; i++) {
    }
    for (int j = 25; j < 50; j++) {
    }

Antwoord 4

Ik herinner me nog de eerste weken van mijn programmeercursussen en ik begrijp heel goed hoe je je voelt. Hier is de code die uw probleem oplost. Om van dit antwoord te leren, probeert u het uit te voeren door verschillende ‘print’ in de lus toe te voegen, zodat u de voortgang van de variabelen kunt zien.

import java.util.*;
import java.lang.*;
public class foo
{
   public static void main(String[] args)
   { 
      double[] alpha = new double[50];
      int count = 0;
      for (int i=0; i<50; i++)
      {
          // System.out.print("variable i = " + i + "\n");
          if (i < 25)
          {
                alpha[i] = i*i;
          }
          else {
                alpha[i] = 3*i;
          }
          if (count < 10)
          {
            System.out.print(alpha[i]+ " "); 
          }  
          else {
            System.out.print("\n"); 
            System.out.print(alpha[i]+ " "); 
            count = 0;
          }
          count++;
      }
      System.out.print("\n"); 
    }
}

Other episodes