2016-05-29 29 views
0

Ich versuche, ein Programm zu schreiben, das eine Zeichenfolge erstellt, die ein 8 × 8 Raster darstellt, mit Zeilenumbruch Zeichen, um Zeilen zu trennen. An jeder Position des Gitters gibt es entweder ein Leerzeichen oder ein "#" Zeichen. Die Charaktere sollten ein Schachbrett bilden.JavaScript-Algorithmus zum Schachbrett 8x8 Gittermuster

Passing diese Zeichenfolge console.log sollte wie folgt zeigen:

# # # # 
# # # # 
# # # # 
# # # # 
# # # # 
# # # # 
# # # # 
# # # # 

Wenn Sie ein Programm haben, die dieses Muster erzeugt, definieren eine Variable size = 8 und das Programm ändern, so dass es für jede Größe arbeitet, Ausgeben ein Raster der gegebenen Breite und Höhe.

var hash = "#"; 
var space = ' '; 
var size = 8; 

for (var x = 1; x <= size; x++); { 
    var line = ' '; 

    for (var y = 1; y <= size; y++); { 
    if (x % 2) { 
     if (y % 2) { 
     line = line + space; 
     } else { 
     line = line + hash; 
     } 
    } else { 
     if (y % 2) { 
     line = line + hash; 
     } else { 
     line = line + space; 
     } 
    } 

    } 

    console.log(line); 
} 

Ich habe Probleme, herauszufinden, warum dies nicht funktioniert ... :(

+0

'var line = '';' <- das erzeugt einen leeren Platz am Anfang. Wie funktioniert es nicht, was ist die Ausgabe oder der Fehler? – coyotte508

+2

Sie haben einen abschließenden Semikolon auf Ihren Schleifen, was bedeutet, dass sie nicht ausgeführt werden: 'für (var x = 1; x <= Größe; x ++);' –

+0

Ja, Semikolons waren es. Vielen Dank! Auch der Raum! Habe es nicht einmal in Betracht gezogen. –

Antwort

1

die Semikolons am Ende des Loops entfernen:

for (var x = 1; x <= size; x++) { 
    var line = ' '; 

    for (var y = 1; y <= size; y++) { 

Mit den Semikolons, die im Anschluss an dem Motor tun:

  1. Führen Sie das Material nach ‚für‘ in eckigen Klammern - i wird 10 danach
  2. Zeug in den geschweiften Klammern wird einmal danach
  3. ausgeführt werden

Wenn Sie einen Zeilenumbruch hinzufügen wird es offensichtlich

for (var i = 0; i < 10; i++); 
{console.log(i);} 

Die geschweiften Klammern für nicht der Körper die sind, sondern ein neuer Block.

+0

D'oh! Danke für die Antwort! –

0

Stellen Sie sicher, ; zu entfernen - s vor for Schleifen, weil der, dass Ihre for Schleifen sind nicht richtig ausführen von Logik in Klammern (Code wird einmal gerade laufen):

So etwas tun, was Sie wollen:

var size = 8;  
 
for (var y = 0; y < size; y++) { 
 
    var line = ' '; 
 

 
    for (var x = 0; x < size; x++) { 
 
     line += (y + x + 1) % 2 ? ' ': '#'; 
 
    } 
 

 
    console.log(line); 
 
}

+0

Kannst du dem OP sagen, wo er falsch gelaufen ist? (die zusätzlichen Semikolons). Diese Antwort ist ansonsten nicht hilfreich. – coyotte508

+0

Warum sollte OP eine Funktion dafür verwenden? Sie haben das Problem behoben, aber da Sie nichts erklären, hilft die Antwort dem OP nicht, das Problem zu verstehen. – DarkDust

+0

Die Syntax ist nicht falsch, das _behaviour_ ist nicht, was OP erwartet. – DarkDust

Verwandte Themen