【问题标题】:How can I make a symmetric histogram like this?如何制作这样的对称直方图?
【发布时间】:2021-09-21 12:23:59
【问题描述】:

我想编写一个 JavaScript 程序来显示如下图所示的对称直方图:

程序应要求用户输入要打印的条数和用于绘制条的字符。条中的字符数需要显示在每个条的右侧。

显示的示例是当我输入 @ 作为字符并输入 13 作为数字时。

这是我的代码:

var symbol = prompt("Enter the symbol");
var number = prompt("Enter the number");
var currentNum = 1;
let text = "";
let symbolNum = symbol;

while (currentNum <= number) {
  text += "<br>" + symbolNum + " " + currentNum;
  symbolNum += symbol;
  currentNum++;
}


document.write(text + "<br>");

最后,我只能输出以下内容:

我想知道我可以做些什么来扭转循环?

【问题讨论】:

  • 在任务描述中明确说要使用嵌套循环,你为什么不这样做?
  • 我不知道该怎么做
  • 至少表明你尝试过
  • 我知道什么是嵌套循环,也知道怎么做。但我不知道在这种情况下如何实现嵌套循环:(
  • 我同意。在这里使用嵌套循环并不是最有效的方法

标签: javascript html loops while-loop


【解决方案1】:

相同结果的两种不同方式。不是很干净,但可以工作。

var symbol = prompt("Enter the symbol");
var number = prompt("Enter the number");
var currentNum = 1;
let textTOP = "";
let textBOTTOM = "";
let symbolNum = symbol;

while (currentNum <= number) {
  textTOP += "<br>" + symbolNum + " " + currentNum;
  if (currentNum < number)
      textBOTTOM = "<br>" + symbolNum + " " + currentNum + textBOTTOM;
  symbolNum += symbol;
  currentNum++;
}


document.write(textTOP + textBOTTOM + "<br>");

var symbol = '@';
var number = 13;

var currentNum = 1;
let text = "";

while (currentNum < number * 2) {
  
  if (currentNum <= number) {
    
    let num = currentNum;
    text += "<br>" + symbol.repeat(num) + " " + num;
    
  } else {
    
    let num = Math.abs(number * 2 - currentNum);
    text += "<br>" + symbol.repeat(num) + " " + num;
    
  }
  
  currentNum++;
}


document.write(text + "<br>");

【讨论】:

    【解决方案2】:

    试试这个

    function SymmetricHistogram(){
      
    const size = 10;
    let numberX = 0;
    let numberY = 0;
    
    for(let i = size; i>=-size; i--) {
      for(let j=size; j>=Math.abs(i); j--){
        process.stdout.write("@");
      }
      numberX <=size ? console.log(numberX++) : console.log(--numberY);
    }
    
      }
    
      SymmetricHistogram();

    或者试试下面的

    https://onecompiler.com/javascript/3x58bqr3h

    【讨论】:

    • 我收到错误 { "message": "Uncaught ReferenceError: process is not defined", "filename": "stacksnippets.net/js", "lineno": 18, "colno": 9 }
    • 将其粘贴到您的 IDE 中并运行该文件。像 test.js 文件并运行“节点测试”
    • 我实际上是在用&lt;script src="index.js"&gt;&lt;/script&gt; 做一个网站我没有用node.js
    猜你喜欢
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2013-07-12
    • 1970-01-01
    相关资源
    最近更新 更多