Hallo,
ich möchte gern ein 2 dimensionales int array (4x4 Plätze) zufällig mit den zahlen von 1-8 füllen. Doch leider klappt das nicht so ganz, wie es mir vorstelle. Manchmal klappt es und manchmal nicht.
Kurz die Erläuterung, wie ich mir das gedacht habe.
Ich lass nacheinander die Zahlen von 1-8 eintragen.
Um das zufällig geschehen zu lassen, lass ich die Zahl in einen zufällig ausgewählten Array-Platz schreiben.
Sollte der Array-Platz bereits gefüllt sein, so soll ein neuer Platz gesucht werden und geprüft werden, ob der frei ist. Wenn er frei ist, dann soll die Zahl dort rein und wenn nicht, dann soll er einen neuen Platz suchen. Und das soll eben so lange laufen, bis die Zahlen von 1-8 in der Matrix stehen.
Ich denke der Fehler liegt bei der do-while Schleife. Aber wo genau keine Ahnung. Wäre super, wenn einer von euch Profis, da mal drüberschauen könnte.
So und hier kommt jetzt der Quellcode.
Vielen Dank schon mal für die Hilfe!
ich möchte gern ein 2 dimensionales int array (4x4 Plätze) zufällig mit den zahlen von 1-8 füllen. Doch leider klappt das nicht so ganz, wie es mir vorstelle. Manchmal klappt es und manchmal nicht.
Kurz die Erläuterung, wie ich mir das gedacht habe.
Ich lass nacheinander die Zahlen von 1-8 eintragen.
Um das zufällig geschehen zu lassen, lass ich die Zahl in einen zufällig ausgewählten Array-Platz schreiben.
Sollte der Array-Platz bereits gefüllt sein, so soll ein neuer Platz gesucht werden und geprüft werden, ob der frei ist. Wenn er frei ist, dann soll die Zahl dort rein und wenn nicht, dann soll er einen neuen Platz suchen. Und das soll eben so lange laufen, bis die Zahlen von 1-8 in der Matrix stehen.
Ich denke der Fehler liegt bei der do-while Schleife. Aber wo genau keine Ahnung. Wäre super, wenn einer von euch Profis, da mal drüberschauen könnte.
So und hier kommt jetzt der Quellcode.
Java:
public class Testcase2 {
public static void main(String args[]){
int spielfeld2[][] = new int[4][4]; //Zahlenmatrix anlegen (
for(int i = 1; i < 9; i++){ // traegt zuerst die zahl 1 in eines der 16 Felder ein, danach die zahl 2 usw.
int zufaelligeZeile1 = (int)(Math.random() * 4); //waehlt zuerst eine beliebige zeile zwischen 0 und 3
int zufaelligeSpalte1 = (int)(Math.random() * 4); //waehlt eine beliebige spalte zwischen 0 und 3
if(spielfeld2[zufaelligeZeile1][zufaelligeSpalte1] == 0){ //prueft ob in dem Platz bereits etwas steht
spielfeld2[zufaelligeZeile1][zufaelligeSpalte1] = i; //wenn nicht, dann schreibe die Zahl rein
}else{ // andernfalls waehle eine andere zeile und eine andere spalte bis
//ein Platz gefunden ist, der frei ist und dort schreibe die zahl rein
do{
zufaelligeZeile1 = (int)(Math.random() * 4); //neue zufaellige Zeile waehlen
zufaelligeSpalte1 = (int)(Math.random() * 4); //neue zufaellige Spalte waehlen
if(spielfeld2[zufaelligeZeile1][zufaelligeSpalte1] == 0){ //prueft ob in dem Platz bereits etwas steht
spielfeld2[zufaelligeZeile1][zufaelligeSpalte1] = i; //wenn nicht schreibe die Zahl dort rein
}
}while(spielfeld2[zufaelligeZeile1][zufaelligeSpalte1] == 0); //waehle solange einen neuen Platz bis einer gefunden ist
//in dem noch nichts steht und schreibe dort die Zahl rein
}
/*
* Augabe um zu schauen, was Schritt für Schritt passiert.
*/
for(int k = 0; k < 4; k++){
System.out.println();
for(int n = 0; n < 4; n++){
System.out.print(spielfeld2[k][n]);
}
}
for(int b = 0; b < 2; b++){
System.out.println();
}
}
}
}
Vielen Dank schon mal für die Hilfe!