Hallo
ich soll für die Schule im Informationsverarbeitungskurs ein Sortierverfahren vorstellen. Shakersort (oder Ripplesort oder Cocktailsort . . .). Das Prinzip verstehe, theoretisch.
Nun habe ich mir gedacht, dass ich der Klasse ein Beispielprogramm zeige. Dabei sollen 10 Zahlen von der kleinsten bis zur größten hin geordnet werden.
Jetzt zum Problem: Ich versuche das Programm auszuführen und kann auch Zahlen eingeben. Er sagt mir dann nur, dass mein Array nicht groß genug wäre. Warum verstehe ich nicht, denn eigentlich müsste es gehen. Auch mein Lehrer findet den Fehler irgendwie nicht.
Es wäre super, wenn irgendwer den Fehler (oder die Fehler) findet und möglichst einfach erklärt. Bin leider auch noch nicht besonders fortgeschritten, kann also auch noch nicht so viele Anweisungen benutzen (und verstehen >.<).
ich soll für die Schule im Informationsverarbeitungskurs ein Sortierverfahren vorstellen. Shakersort (oder Ripplesort oder Cocktailsort . . .). Das Prinzip verstehe, theoretisch.
Nun habe ich mir gedacht, dass ich der Klasse ein Beispielprogramm zeige. Dabei sollen 10 Zahlen von der kleinsten bis zur größten hin geordnet werden.
Jetzt zum Problem: Ich versuche das Programm auszuführen und kann auch Zahlen eingeben. Er sagt mir dann nur, dass mein Array nicht groß genug wäre. Warum verstehe ich nicht, denn eigentlich müsste es gehen. Auch mein Lehrer findet den Fehler irgendwie nicht.
Es wäre super, wenn irgendwer den Fehler (oder die Fehler) findet und möglichst einfach erklärt. Bin leider auch noch nicht besonders fortgeschritten, kann also auch noch nicht so viele Anweisungen benutzen (und verstehen >.<).
Java:
import java.util.*;
public class shakersort
{
public static void main (String args[])
{
Scanner tastatur;
tastatur = new Scanner(System.in);
int[] array;
array = new int[10];
int a=0, tausch=1, hand=0, x=1;
while (a < array.length)
{
System.out.println("Wie lautet der Wert an Position " + a + " ?");
array[a] = tastatur.nextInt();
a++;
}
a = 0;
while (tausch!=0)
{
tausch=0;
for (int i=1; i<8; i++)
{
if (array[a]>array[a+x])
{
hand = array[a+x];
array[a+x] = array[a];
array[a] = hand;
tausch++;
}
a=a+x;
}
if (a==array.length-1)
{
a=8;
x=(-1);
}
if (a==1)
{
a=2;
x=1;
}
}
a=0;
while (a < array.length)
{
System.out.println(array[a]);
a++;
}
}
}