我最近有一个任务是根据用户给出的随机高度做一个空三角形。
它必须看起来像那样,但用户是可以设置高度的人。
我的脚本现在看起来像这样:
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>");
我必须更正我的脚本的哪一部分以使它正确地显示三角形?
问题出在这种情况下:
if (j == hgh + 1 - i ... )
hgh实际上是一个字符串(因为prompt返回一个字符串)。所以“+”运算符在这里对字符串起作用,并将hgh和“1”串联起来,而不是添加这些值。如果输入“5”,(hgh+1)将得到“51”,而不是“6”。
快速解决方案:将表达式改写为hgh-i+1。没有字符串减法,所以(hgh-i)会将hgh转换成一个数字,并做一个适当的减法。