# Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException



## Ledex (29. Apr 2015)

Hallo alle miteinander!
Ich habe mich an einem Sorierungsalgrythmus versucht und habe als Anfänger nun ein Problem: 
Die Konsole öffnet sich und ich kann die erste Zahl eingeben und dannach gibt die Konsole diese Hieroglyphen (zumindest in meinen Augen) aus:
Bitte geben Sie nun 5 Zahlen ein welche sie je mit dem drücken der Entertaste bestätigen.​Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at sortieren.main(sortieren.java:27)
C:\Users\Ledex\Desktop\Sortierung>Pause
Drücken Sie eine beliebige Taste . . .​
Könnt ihr mir da irgentwie helfen? Ich habe schon gesehen, dass der Fehler wahrscheinlich bei "int b = datensatz[r];" liegt, jedoch habe ich noch keinen Weg gefunden ihn zu beheben. Unten findet ihr auch nochmal den kompletten Code.

Viele Grüße und bald einen schönen ersten Mai:
Ledex



```
public class sortieren
{
  
  public static void main(String[] args) 
  {
    int[] datensatz = new int[5];
    System.out.println("Bitte geben Sie nun 5 Zahlen ein welche sie je mit dem drücken der Entertaste bestätigen.");
    String s = javax.swing.JOptionPane.showInputDialog( "Bitte Zahl eingeben" );
    datensatz[0] = Integer.parseInt(s);
    datensatz[1] = Integer.parseInt(s);
    datensatz[2] = Integer.parseInt(s);
    datensatz[3] = Integer.parseInt(s);
    datensatz[4] = Integer.parseInt(s);
    //sort(datensatz,5);
    
    int n = 5;
    int[] sort = new int[n];
    int x = 0;
    int i = 0;
    int r = 0;
    for (i=1;i<n++;i++) 
    {
      x = 0;
      for (r=0;r<n++;r++) 
      {
        int a = datensatz[i];
        int b = datensatz[r];
        if (a > b) 
        {
          x++;
        } // end of if
      } // end of for
      sort[x] = datensatz[i];
    } // end of for
    System.out.println(sort[0]);
    System.out.println(sort[1]);
    System.out.println(sort[2]);
    System.out.println(sort[3]);
    System.out.println(sort[4]);
  }
```


----------



## Enceladus271 (29. Apr 2015)

Der Fehler ist in Zeile 25:
for (r=0;r<n++;r++)
Wenn du n und r beide inkrementierst wird immer r<n gelten. Daher ist das eine Endlosschleife. Und bei r=5 gibts dann die IndexOutOfBoundsException.


----------



## Ledex (30. Apr 2015)

Hallo und Danke erstmal für deine Hilfe  ich werde das ganze heute Nachmittag nochmal testen...


----------



## Ledex (3. Mai 2015)

Hey ich bin es nochmal. Ich hatte leider bis jetzt keine Möglichkeit deine Lösung auszuprobieren, jedoch habe ich es eben versucht und ich bekomme immer noch den Fehler:

Bitte geben Sie nun 5 Zahlen ein welche sie je mit dem drücken der Entertaste be​stätigen.​Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5​at sortieren.main(sortieren.java:27)​​C:\Users\Ledex\Desktop\Sortierung>Pause​Drücken Sie eine beliebige Taste . . .​
Hier ist nochmal genau was ich verändert habe:


```
public class sortieren
{
  
  public static void main(String[] args) 
  {
    int[] datensatz = new int[5];
    System.out.println("Bitte geben Sie nun 5 Zahlen ein welche sie je mit dem drücken der Entertaste bestätigen.");
    String s = javax.swing.JOptionPane.showInputDialog( "Bitte Zahl eingeben" );
    datensatz[0] = Integer.parseInt(s);
    datensatz[1] = Integer.parseInt(s);
    datensatz[2] = Integer.parseInt(s);
    datensatz[3] = Integer.parseInt(s);
    datensatz[4] = Integer.parseInt(s);
    //sort(datensatz,5);
    
    int n = 6;
    int[] sort = new int[n];
    int x = 0;
    int i = 0;
    int r = 0;
    for (i=1;i<n;i++) 
    {
      x = 0;
      for (r=0;r<n;r++) 
      {
        int a = datensatz[i];
        int b = datensatz[r];
        if (a > b) 
        {
          x++;
        } // end of if
      } // end of for
      sort[x] = datensatz[i];
    } // end of for
    System.out.println(sort[0]);
    System.out.println(sort[1]);
    System.out.println(sort[2]);
    System.out.println(sort[3]);
    System.out.println(sort[4]);
  }
 
  /*
  public static void sort(int[]daten,int n)
  {
    daten = new int[n];
    int[] sort = new int[n];
    int x = 0;
    int i = 0;
    int r = 0;
    for (i=0;i<n++;i++) 
    {
      x = 0;
      for (r=0;r<n++;r++) 
      {
        if (daten[i]>daten[r]) 
        {
          x++;
        } // end of if
      } // end of for
      sort[x] = daten[i];
    } // end of for
    System.out.println(sort[0]);
    System.out.println(sort[1]);
    System.out.println(sort[2]);
    System.out.println(sort[3]);
    System.out.println(sort[4]);
  } */
  
} // end of class sortieren
```

Ich hoffe einer von euch kann mir da helfen.
MFG Ledex


----------



## fhoffmann (3. Mai 2015)

Du hast ein Array der Größe 5 und setzt n auf 6 - das passt nicht.


----------

