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

Ledex

Mitglied
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


Java:
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]);
  }
 
Zuletzt bearbeitet:
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.
 
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:

Java:
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
 

Zurück
Oben