【问题标题】:Output in JS program oddJS程序奇数输出
【发布时间】:2014-03-04 15:30:54
【问题描述】:

我目前正在尝试让我的程序运行。它应该将数字从低到高分解。也就是说,如果下限为 12,上限为 16,则应将以下内容输出到标签中......

12: 2,3,4,6,12
13: 13
14: 2,7,14
15: 3,5,15
etc.....

但是,我得到这样的输出:

12: 2,3,4,6,12,
13,
2,7,14,
3,5,15,
2,4,8,16,
17,

它以一种奇怪的方式输出,我一直在尝试移动它。唯一正确的行是最上面的行。这里有人可以帮帮我吗?我确定这是小事,但我就是无法理解......

    function calculate(num){
    var int = 2;    
    var num = document.getElementById("num").value;
    var high = document.getElementById("high").value;
    var str = num + ": ";


    while (num <= high){

    for (var i = 2; i <= num; i++){
        if(num % i == 0){
            str += i + ",";         
        }

    }   
    num++;

    str += "\n";
    }
    document.getElementById("outputArea").innerHTML = str;
}

【问题讨论】:

标签: javascript loops output


【解决方案1】:

您只会添加一次num + ': '。改成这样:

function calculate(num) {
    var int = 2;
    var num = document.getElementById("num").value;
    var high = document.getElementById("high").value;
    //var str = num + ": "; // this doesn't go here.

    while (num <= high) {
        var str = num + ": "; // this goes here
        for (var i = 2; i <= num; i++) {
            if (num % i == 0) {
                str += i + ",";
            }

        }
        num++;

        str += "\n";
    }
    document.getElementById("outputArea").innerHTML = str;
}

【讨论】:

    【解决方案2】:

    您的num + ': ' 位置不正确。此外,您将始终打印一个逗号,除非有多个逗号,否则您不应该这样做。 \n 不起作用,因为您使用 HTML 显示它,所以我将其更改为 &lt;br&gt;

    这是我更新的功能:

    function calculate() {
        var int = 2;
        var num = document.getElementById("num").value;
        var high = document.getElementById("high").value;
        var str = "";
    
    
        while (num <= high) {
            str += num + ": ";
            var first = true;
            for (var i = 2; i <= num; i++) {
                if (num % i == 0) {
                    str += ((!first) ? ", " : "") + i;
                    first = false;
                }
            }
            num++;
            str += "<br>";
        }
    
        document.getElementById("outputArea").innerHTML = str;
    }
    

    JSFiddle:http://jsfiddle.net/howderek/Bfeva/

    【讨论】:

      【解决方案3】:

      您必须在 while 循环之外定义 str 并执行以下操作:

        str += num + ": ";
      

      在里面。就像在这个DEMO.

      var str = "";
      while (num <= high) {
          str += num + ": ";
          for (var i = 2; i <= num; i++) { 
              if (num % i === 0) {               
                  str += i + ",";
              }
          }
          num++;
          str += "\n";
      }
      

      加号

      如果你不想要最后一个逗号,你必须在 for 循环中添加这个检查:

      str += i;
      if (i != num) {
        str += ",";
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-16
        • 1970-01-01
        • 1970-01-01
        • 2014-09-19
        • 1970-01-01
        • 2021-07-13
        • 2014-02-04
        相关资源
        最近更新 更多