# Zweidimensionales Array erstellen und zufällig mit 0 und 1 füllen



## Klinger (1. Mai 2016)

Hallo liebe Forengemeinde,
ich würde gerne ein 5x5 Array erstellen und zufällig mit 0 und 1 füllen.
Bisher habe ich folgendes:


```
public class GOF_PVLnurarray {
 
  public static void main(String[] args) {
   
   
       int [][] Welt = new int[15][15];
        for(int i = 0; i<14; i++) {
        for(int j = 0; j<14; j++) {
        Welt[i][j] = (int)Math.random();
                   }
                   }  
System.out.println(Welt);

 
}
   
}
```
Führt aber nicht zum gewünschten Ergebnis. Mir ist schon aufgefallen, daß ich so im besten Fall nur die Felder 1/1, 2/2,...15/15 gefüllt kriege, aber nichtmal das klappt so.


----------



## kiwara (1. Mai 2016)

Math.random() gibt wie du sicherlich schon erkennt hast eine zufällige Zahl zwischen 0 und 1 aus. Der cast zum int impliziert aber kein runden, sondern streicht alles was nach dem Komma kommt einfach weg, ob dort nun .1 oder .9 steht.

EDIT: Was mir noch so auffällt ist, dass deine Schleife nur von 0-13 anstatt von 0-14 geht.


----------



## Klinger (1. Mai 2016)

Ich habe nun zunächst das Problem gelöst, entweder eine 1 oder eine 0 zu produzieren:

```
public class GOF_PVLnurarray {

  public static void main(String[] args) {
    float i;
    int a;
    for (a=0;a<16 ;a++ ) {
      i = (float) (Math.random());
        if (i < 0.5) {
        i = 0;
      } // end of if
      else {
        i = 1;
      } // end of if-else
      System.out.println(i);
    }
  }
}
```
Wie fülle ich nun damit mein array?


----------



## kiwara (1. Mai 2016)

```
public static void main(String[] args) {

       int [][] welt = new int[15][15];
       for(int i = 0; i<15; i++){
           for(int j = 0; j<15; j++){
               welt[i][j] = Math.round(Math.random());
           }
       }
}
```


----------



## VfL_Freak (2. Mai 2016)

Moin,


Klinger hat gesagt.:


> ich würde gerne ein 5x5 Array erstellen


mal so nebenbei gefragt: warum erzeugst Du dann ein 15x15 Array ?? 
Gruß Klaus


----------



## Klinger (2. Mai 2016)

Sorry, sollte wirklich 15x15 heißen.


----------



## JStein52 (2. Mai 2016)

Und wenn du die ganze welt mit 0 und 1 füllen willst solltest du deine Schleifenbedingung anders formulieren:


```
int [][] welt = new int[15][15];
       for(int i = 0; i<welt.length; i++){
           for(int j = 0; j<welt[0].length; j++){
               welt[i][j] = Math.round(Math.random());
           }
       }
```


----------



## Klinger (2. Mai 2016)

Danke, nun sieht es so aus:

```
public class GOFnurarray {
  public static void main(String[] args) {
 
  int aa;
  int bb;
 
  int [][] welt = new int[15][15];
       for(int ii = 0; ii<welt.length; ii++){
           for(int jj = 0; jj<welt[0].length; jj++){
               welt[ii][jj] = (int)Math.round(Math.random());
           for (aa = 1; aa<16 ;aa++ ) {
              for (bb = 1; bb<16 ;bb++ ) {
                   if (welt[ii][jj]==1)
                   System.out.print(" # ");         
                  
                   else
                   System.out.print("   "); 
               } // end of for
               System.out.println();             
    }          // end of for
           }
       }
      
}
}
```
Irgendwo ist da noch ein kleiner Fehler drin. Er scheint nun 15 Arrays zu erstellen, entweder komplett mit 1 oder mit 0 gefüllt.


----------



## JStein52 (2. Mai 2016)

Klinger hat gesagt.:


> *for* (aa = 1; aa<16 ;aa++ ) {
> *for* (bb = 1; bb<16 ;bb++ ) {
> *if* (welt[ii][jj]==1)
> System.out.print(" # ");
> ...



Du fragst hier immer wieder das gleiche element ab !!  welt[ii][jj]


----------



## Klinger (2. Mai 2016)

Nach 15 Zeichen soll ein Umbruch erfolgen. Wie schreibe ich das?


----------



## JStein52 (2. Mai 2016)

So:


```
int [][] welt = new int[15][15];
       for(int ii = 0; ii<welt.length; ii++){
           for(int jj = 0; jj<welt[0].length; jj++){
               welt[ii][jj] = (int)Math.round(Math.random());
                   if (welt[ii][jj]==1)
                   System.out.print(" # ");       
                
                   else
                   System.out.print("   ");
               } // end of for jj
               System.out.println();           
    }          // end of for ii
```


----------



## Klinger (2. Mai 2016)

Perfekt! Danke!


----------

