首页 > 解决方案 > 如何使用“while”循环使用 JavaScript 制作反向星号三角形

问题描述

我对这段代码的目标是使用提示中使用的给定输入显示一个反向星号直角三角形(右上方的直角)。例如,如果用户输入 5,则 html 正文上的输出应为:

*****
 ****
  ***
   ** 
    *

这是我的代码,这产生了几乎我需要的东西,但是我在添加空格时遇到了麻烦,例如,第一行中的零个空格,第二行中的一个空格,第三行中的两个空格,等等。

document.write("<table border=1>"); //start table, *set border=0 when finished*

var height, something, spaces;

height = Number(prompt("Please enter a height.")); // prompts for height

something = height; //******place-holder, pick new variable name******

var counter, counter_2;

spaces = 0;
counter = 1;
row = 0;
column = 0;

while (something != 0) // continues until something = 0
{
  document.write("<tr>"); // start row
  while ((row > 0) && (column < height)) {
    document.write("<td>" + " " + "</td>");
    column++;
  }
  while (counter <= height) // continues until counter = height
  {
    document.write("<td>" + "*" + "</td>"); // adds "*"
    counter++; // add 1 to counter
    column++;
  }
  something--; // subtract 1 from "something"
  counter = 1; // reset counter to 1
  height--;
  column = 0;
  row++;
  document.write("</tr>"); // end row
}
document.write("</table>"); // end table

标签: javascript

解决方案


你唯一的一个条件是错误的

代替

while ((row > 0) && (column < height)) {

尝试

while ((row > 0) && (column < row)) {

document.write("<table border=1>"); //start table, *set border=0 when finished*

var height,something,spaces;
height = Number(prompt("Please enter a height.")); // prompts for height

something = height; //******place-holder, pick new variable name******
var counter, counter_2;

spaces = 0;
counter = 1;
row=0;
column=0;

while (something != 0) // continues until something = 0
    {
    document.write("<tr>"); // start row
    while ((row > 0) && (column<row))
        {
        document.write("<td>" + " " + "</td>");
        column++;
        }
    while (counter <= height)  // continues until counter = height
        {
        document.write("<td>" + "*" + "</td>"); // adds "*"
        counter++; // add 1 to counter
        column++;
        }
    something--; // subtract 1 from "something"
    counter=1; // reset counter to 1
    height--;
    column=0;
    row++;
    document.write("</tr>"); // end row
    }
document.write("</table>");


推荐阅读