提问者:小点点

在Javascript中基于给定高度的具有空中心的三角形


我最近有一个任务是根据用户给出的随机高度做一个空三角形。

它必须看起来像那样,但用户是可以设置高度的人。
我的脚本现在看起来像这样:

var hgh = prompt("Set the triangle's height: ");

  document.write("<center><pre>");
  for (var i = 1; i <= hgh ; i++) {
    var s = "";
    for (var j = 1; j <= (2 * hgh - 1); j++) {
      if (i != hgh ) {
        if (j == hgh + 1 - i || j == hgh - 1 + i) {
           s += "X";
        }
        else {
          s += " ";
        }
      }
      else {
        s += "X";
      }
    }
    document.write(s);
    document.write("<br>");
  }
  document.write("</pre></center>");

我必须更正我的脚本的哪一部分以使它正确地显示三角形?


共1个答案

匿名用户

问题出在这种情况下:

if (j == hgh + 1 - i ... )

hgh实际上是一个字符串(因为prompt返回一个字符串)。所以“+”运算符在这里对字符串起作用,并将hgh和“1”串联起来,而不是添加这些值。如果输入“5”,(hgh+1)将得到“51”,而不是“6”。

快速解决方案:将表达式改写为hgh-i+1。没有字符串减法,所以(hgh-i)会将hgh转换成一个数字,并做一个适当的减法。