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:
publicclass sortieren
{publicstaticvoidmain(String[] args){int[] datensatz =newint[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 =newint[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 forSystem.out.println(sort[0]);System.out.println(sort[1]);System.out.println(sort[2]);System.out.println(sort[3]);System.out.println(sort[4]);}
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:
publicclass sortieren
{publicstaticvoidmain(String[] args){int[] datensatz =newint[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 =newint[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 forSystem.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