0

我需要使用 Javascript 使用输入的起始编号和 html 页面中的行数生成一个半金字塔数字系列,并在 html 页面中显示结果。我已经完成了 Java 脚本和东西。我不明白的是它的逻辑。

看看这个你可能会明白我在说什么: 在此处输入图像描述

这是我在 Javascript 中的函数,将在按钮单击函数上触发

doFunction(){
 var enteredNumber=document.getElementById("start");
 var lines=document.getElementById("lines");
 var result;
 for(i=0;i<=lines.value;i++) {
 for(j=enteredNumber.value;j<=i;j++) { document.write(j + "&nbsp;" + "&nbsp;"); } 
 document.write("<br />");
 }
}

帮助我打印以下顺序的逻辑:

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

有一个条件。我将指定$start$lines

如果$start = 5然后$lines = 3输出应该是这样的:

5
5 6
5 6 7

我曾经使用过 for 循环,但是如果我给自己的起始编号高于行数,那将不起作用。

我实际上需要用 Javascript 完成它,我已经完成了必要的操作,但是我对生成此类系列的逻辑感到困惑(使用用户给定的值)我实际上使用了两个 for 循环来生成如下所示的常规数字系列1 1 2 1 2 3,所以上。

4

2 回答 2

2

使用单独的变量来存储行数,即您开始的数字。算法应如下所示:

$lines = input
$start = input
for($i = 0;$i<$lines;$i++){
    $psudo_start=$start;
    for($j = 0;$j<$i;$j++){
        print $psudo_start;
        $psudo_start++;
    }
    print newline;
}
于 2013-10-29T13:17:27.567 回答
0

首先,您需要为您的开始/行提供默认值,以防没有提供,然后您获取输入并检查您是否应该使用该值或默认值。请记住,您的输入是一个字符串,因此您需要使用parseInt()它来将其转换为数字。

// If no start value is provided default to a start of 1
var startVal = 1;
var enteredStart = document.getElementById("start").value.trim();
if (enteredStart.length > 0) {
    startVal = parseInt(enteredStart);
}

// if no lines value is provided default to a lines of 5
var linesVal = 5;
var enteredLines = document.getElementById("lines").value.trim();
if (enteredLines.length > 0) {
    linesVal = parseInt(enteredLines);
}

现在你有了你的开始和线,无论是用户设置的还是默认的。构建您的输出字符串:

var output = "";
for (var i = 0; i < lines; i++) {
    for (var j = startVal; j <= startVal + i; j++) {
        output += j + "  ";
    }
    output += "</br>";
}

j <= startVal + i请注意,当开始编号高于行数时,您的内部循环应该可以解决您不打印的问题。

与其document.write()在页面中放置一个 div 并更改该 div 中的文本以显示您的输出,不如这样做。

<div id="outputDiv"></div>
document.getElementById("outputDiv").innerHTML = output;
于 2013-10-29T13:48:36.130 回答