2016-12-03 1 views
-2

Ich versuche, 2 Schleifen zu verwenden, die einen Wert in einem 2d-Array zuweisen. Das Ziel ist, dass die Zahlen entweder 0 oder 16777215 sind. Wenn ich den Code verwende, den ich gemacht habe, werden alle 300 Werte, die gedruckt werden, 16777215 verwendet. Ich habe beide Werte in der if und else-Anweisung ersetzt und es wurde fortgesetzt. Die Werte sollten zufällig zwischen 0 und 16777215. Der Code, den ich zur Zeit so gewählt werden, ist wie folgt:Verwenden einer Schleife, um Werte einem 2d-Array zuzuweisen

public static void main(String[] args) { 
    int[][] draw = new int[400][300]; 
    for (int i = 0; i < draw.length; i++) { 
     for (int b = 0; i < draw[i].length; i++) { 
      if (Math.random() > 0.5) { 
       int x = 16777215; // num for black 
            // should normally be 0 but for trial purposes, I used 16777215 
       draw[i][b] = x; 
      } else { 
       int x = 16777215; // num for white 
       draw[i][b] = x; 
      } 
     } 
    } 
    for (int i = 0; i < draw.length; i++) { 
     for (int b = 0; b < draw[i].length; b++) { 
      System.out.println(draw[i][b]); 
      //should be a random spread of 0 and 16777215 but 16777215 appears only every 300 lines in the output. 
     } 
    } 
} 

Edit: Zuerst bei 289 erscheinen, dann bei Zugaben von 300 (ex 589, 889)

+0

Num für Schwarz und Weiß sind gleich. Beide Seiten des if sind identisch – Bohemian

+0

OP Beachten Sie, dass beide Antworten korrekt sind, Sie haben zahlreiche (bearbeiten: nun, ich denke nur diese zwei) Probleme in Ihrem Code. – Rogue

+0

Tipp: Sie sollten es auch vermeiden, alle diese fest codierten Werte zu verwenden. Definieren Sie zumindest etwas wie 'private final static int BLACK = 16 ...' (aber verwenden Sie besser eine enum mit einem "custom" int Wert). Und dann zeichne zum Beispiel [i] [b] = BLACK. Es hat keinen Sinn, diese x-Variable hier zu haben! – GhostCat

Antwort

0

Sie haben geschrieben for (int b = 0; i < draw[i].length; i++)

Sollte das nicht for (int b = 0; b < draw[i].length; b++) sein?

Das Array wird in jeder Position mit 0 initialisiert. Deshalb sehen Sie so viele Nullen.

0

In Ihrer inneren for-Schleife haben Sie den Wert von i erhöht.

Ich denke, Sie sollten die Variable b in Ihrer inneren Schleife verwendet haben.

Entsprechend Ihrer Schleife Ihre Loop-Sequenz läuft wie folgt

0,0

0,0

0,0 ....

1,0

1,0

Wenn Sie die innere Schleife wie folgt ändern

for (int b = 0; b < draw[i].length; b++) 

die Sequenz

0,0

0,1

0,2 ...

1,0

1,1 sein wird und So weiter

Korrigierter Code:

public static void main(String[] args) { 
int[][] draw = new int[400][300]; 
for (int i = 0; i < draw.length; i++) { 
    for (int b = 0; b < draw[i].length; b++) { 
     if (Math.random() > 0.5) { 
      int x = 16777215; 
      draw[i][b] = x; 
     } else { 
      int x = 16777215; 
      draw[i][b] = x; 
     } 
    } 
} 
for (int i = 0; i < draw.length; i++) { 
    for (int b = 0; b < draw[i].length; b++) { 
     System.out.println(draw[i][b]); 
    } 
} 
} 
Verwandte Themen