簡體   English   中英

循環迭代。 JavaScript控制台圖片

[英]Loop iteration. JavaScript console image

我是Javascript的新手,也是stackoverflow的新手,所以這里有一個問題我已經整理了幾天。 我有一個功課要做,一個控制台應用程序在控制台上打印“M”,它由星號:“*”打印,並被迷惑:“ - ”包圍,它們充當空間。 字符的寬度為N.但是從下面的代碼中我可以看到,我只設法做了一半,因為我似乎無法弄清楚如何打印字符的其他部分,與當前相反。 對於凌亂的代碼和解釋很抱歉,因為我對編程完全不熟悉。 請給我一些關於如何繼續我的代碼邏輯的好建議。

 var newArr = [3, 5, 7, 9, 11]; let N = Number(newArr[0]); console.log(`N = ${N}`); let str = ''; let j = ''; let k = '' if (N > 2 && N < 10000) { for (var i = '-'; i.length <= N + 1; i += '-') { str += '*'; if (j.length <= N * 5) { for (j = ''; j.length <= N * 5; j += '-') { if (j.length >= N && j.length < N * 2) { j += str.repeat(N); } else if (j.length >= N * 3.5 && j.length < N * 4) { j += str.repeat(N) } } } console.log(i + j) } } 

它應該是這樣的:

N = 3
---***---***---     
--*****-*****--       
-***-*****-***-      
***---***---***  
N = 5
-----*****-----*****–––––-----*****-----*****–––––
----*******---*******--------*******---*******----
---*********-*********------*********-*********---
--*****-*********-*****----*****-*********-*****--
-*****---*******---*****--*****---*******---*****-
*****-----*****–----**********-----*****–----*****

N = 7
-------*******-------*******--------------*******-------*******-------
––––––*********-----*********––––––––––––*********-----*********––––––
-----***********---***********----------***********---***********-----
----*************-*************--------*************-*************----
---*******-*************-*******------*******-*************-*******---
--*******---***********---*******----*******---***********---*******--
-*******-----*********-----*******--*******-----*********-----*******-
*******-------*******-------**************-------*******-------*******

好的,我可以給你一些線索。

通常,您需要將1個父循環定義為ROW ,它打印M的每一行和定義為COL的嵌套循環,用於將結果與'*'或' - '連接起來。

for (let row = n; row >= 0; row -= 1)

在ROW中你需要if else構造來檢查行號,你必須檢查你是在M的頂部還是在底部,即你必須將M分為2個部分TOPBOTTOM

在ROW中你需要定義為COL的 嵌套循環 ,這樣你就可以使用COL連接結果

總之,在每個嵌套循環中,你必須連接結果+ ='*'或' - '; 並且在每一行上你必須連接結果+ ='\\ r \\ n'即新行

TOP部分是:

---***---***---     
--*****-*****-- 

BOTTOM部分是:

-***-*****-***-      
***---***---***

所以你有if(top)else(bottom)邏輯

在TOP / BOTTOM邏輯中, 您必須弄清楚模式,您擁有多少星/破折號以及它們如何在每條ROW上增加/減少

一些可以幫助你的變量:

const n = 7;
const middle = Math.ceil(n / 2);
let  asterisksTopLength = n;
let asterisksBottomLength = n - 1;
let dashesBottomLength = 1;
let dashesTopLength = n;
let result = '';

提示:如果是其他正文,你需要在TOP / BOTTOM內的每個ROW上更改破折號/星號變量

還嘗試將任務划分為幾個小任務。 即嘗試找出如何首先打印破折號即

---
--
-

然后如何將上面的破折號與'*'連接起來,以便它們成為

---***
--*****
-***

等等...

BTW有一個沒有嵌套循環的解決方案,即只使用1個循環,就像你已經想出了string.repeat(),但我相信你的任務是練習嵌套循環,所以你必須避免使用.repeat()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM