Moin,
ein paar Leute aus meinem Informatikkurs und ich haben beschlossen, um unseren Lehrer ein bisschen zu nerven
in einem kurzem Programm sämtliche Schleifen durch breaks mit Sprungmarken zu erstetzen (ja leider gibt es in Java nicht mehr das wundervolle goto
). Ich weiß, dass es kein guter Stil ist und das man das nicht missbrauchen sollte, aber just for fun kann man das ja mal machen. Back to the track:
Das Programm soll per Selectionsort 10 Zahlen sortieren. Hier das was ich geschrieben habe:
Kompilieren tut er ohne zu meckern und ausführen auch, aber ausgeben tut er 10 mal eine 0! :shock:
(Die Methode getActualArray(int a[]) gibt ein Array aus, rightOrder(int a[]) prüft ob die Zahlen in der richtigen Reihenfolge sind und getPositionOfSmallestNumber(int a[], int b) gibt die Position der kleinsten Zahl an).
Meine Vermutung wäre, dass er das if gar nicht betritt, also den Array-Elementen keine Werte zu teilt. Dadurch würde das Array aus lauter 0 bestehen und entsprechend würde er es einmal ausgeben und das nächste if gar nicht erst betreten, da sie schon in der richtigen Reihenfolge sind!
Wie kann ich diesen Fehler beheben? ???:L
Gruß Paul!
ein paar Leute aus meinem Informatikkurs und ich haben beschlossen, um unseren Lehrer ein bisschen zu nerven
Das Programm soll per Selectionsort 10 Zahlen sortieren. Hier das was ich geschrieben habe:
Java:
public static void main(String[] args)
throws Exception
{
int n = 0, m = 0, help = 0;
int a[] = new int[10];
jump1:
if (n<10)
{
a[n] = (int)(100 * Math.random() + 1);
n++;
break jump1;
}
getActualArray(a);
n = 0;
//for (int n = 1; !rightOrder(number); n++)//Solange die Zahlen ungeordnet sind
jump2:
if (!rightOrder(a))
{
m = getPostionOfSmallestNumber(a, n); //Index der kleinsten Zahl
help = a[n]; //Vertauschen der der jeweiligen Zahlen
a[n] = a[m];
a[m] = help;
getActualArray(a); // Array ausgeben
n++;
break jump2;
}
}
Kompilieren tut er ohne zu meckern und ausführen auch, aber ausgeben tut er 10 mal eine 0! :shock:
(Die Methode getActualArray(int a[]) gibt ein Array aus, rightOrder(int a[]) prüft ob die Zahlen in der richtigen Reihenfolge sind und getPositionOfSmallestNumber(int a[], int b) gibt die Position der kleinsten Zahl an).
Meine Vermutung wäre, dass er das if gar nicht betritt, also den Array-Elementen keine Werte zu teilt. Dadurch würde das Array aus lauter 0 bestehen und entsprechend würde er es einmal ausgeben und das nächste if gar nicht erst betreten, da sie schon in der richtigen Reihenfolge sind!
Wie kann ich diesen Fehler beheben? ???:L
Gruß Paul!