2017-01-20 1 views
-1

J'ai une question qui semble basique mais je n'arrive pas à la comprendre.Impression en Javascript

Écrire un programme qui prend la valeur d'une variable appelée "entrée" (déclarée comme un nombre entier en haut de votre programme) et sort un carré fait d'astérisques () aussi grand que le nombre (entrée). Par exemple, si l'entrée est déclarée avec la valeur 5, votre programme affichera un carré composé de 25 astérisques (), c'est-à-dire; 5 astérisques () haut, par 5 astérisques () long.

Le code que j'ai trouvé jusqu'ici est ci-dessous. Je ne comprends pas vraiment comment faire une chaîne d'impression en continu. Si je faisais étoile = i alors il se transforme en nombres et imprimera les nombres. Alors, comment puis-je faire pour qu'ils se connectent? Je ne peux pas non plus comprendre où je devrais mettre la nouvelle ligne. console.log (étoile "\ n"); me donne une erreur. S'il vous plaît aider :)

var input = 2; 
 
    var star = "*"; 
 
    var i = 0; 
 

 
    do { 
 
    console.log(star); 
 
    i++; 
 

 
    } while (i < input);

+0

Astuce: vous ne voulez pas imprimer chaque astérisque individuellement , vous voulez imprimer chaque ligne d'astérisques. Cela signifie que vous devrez d'abord construire la ligne des astérisques, puis 'console.log()'. – skyline3000

+0

Il y a plusieurs façons de le faire. À l'heure actuelle, vous n'avez que l'impression d'une seule ligne (enfin, vous ne le faites pas, mais vous vouliez le faire), alors que vous devez imprimer les colonnes et les lignes. Je envisagerais de construire une chaîne du nombre requis d'astérisques, puis d'imprimer le nombre correct de lignes. –

+0

Merci les gars! –

Répondre

0

Vous pouvez utiliser le repeat -fonction d'imprimer un caractère plusieurs fois.

var input = 2; 
 
    var star = "*"; 
 
    var i = 0; 
 

 
    while(i++ < input){ 
 
     console.log(star.repeat(input)); 
 
    }

Ce répète le caractère *input fois input lignes.

1

Vous pouvez utiliser String.repeat() (ES6 uniquement) ainsi que \r\n pour ajouter la nouvelle ligne

var input = 5, 
 
    star = "*", 
 
    str = [], 
 
    i = 0; 
 

 
do { 
 
    str.push(Array(input).join(star)); // use array(length).join 
 
    i++; 
 
} while (i < input); 
 

 
str = str.join("\r\n"); // add breaklines 
 
console.log(str);

+0

je vois un peu où je me trompais maintenant, seule chose qui utilise répéter pourrait être trop avancé pour où je suis. Mais cela aide merci :) –

+0

@GianNobilione, j'ai déclassé un peu –

0

Astuce: Vous pouvez créer un tableau vide puis créer une boucle sans fin à votre numéro désiré d'astérisques, après quoi vous rejoindrez tous les membres du tableau ensemble. (Écrire le code ici ne vous aiderait pas beaucoup puisque vous avez mentionné que c'est un devoir).

+0

Merci pour l'indice :) En fait, je cherchais des conseils/aide opposés à la réponse –

0

Vous pouvez aborder cela de deux façons. Si nous appelons votre valeur d'entrée n, alors nous pouvons enregistrer soit n chaînes constituées chacune de n étoiles, soit nous pouvons enregistrer une seule chaîne, contenant (n * n) étoiles, avec des sauts de ligne après chaque énième étoile.

Vous trouverez ci-dessous un exemple de fonction pouvant exécuter cette tâche.

function stars (input) { 
    var output = '' 
    for (var i = 0; i < input; i++) { 
    for (var j = 0; j < input; j++) { 
     output += '*' 
    } 
    output += '\n' 
    } 
    return output 
} 
1

console.log Affichera une seule ligne à la console contenant tout ce que vous passez comme argument. Vous essayez d'imprimer une ligne de n astérisques n fois.

La première étape à suivre est la construction de la chaîne d'astérisques.Vous pouvez concaténer une chaîne à l'autre avec l'opérateur +:

var input = 2; 
var star = "*"; 
var line = ""; 

for(var i = 0; i < input; i++) { 
    line = line + star; 
} 

Une fois que vous avez construit line vous pouvez ensuite l'imprimer n fois:

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

c'est très utile. Maintenant je dois juste ajouter le \ n de sorte qu'il le fasse dans une boîte. –