2016-02-20 72 views
0

我正试图学习使用for()循环来计算从一个数到另一个数的整数(整数)。这是我的代码到目前为止:计数范围内的整数

function processLoop(earlier,later) { 

    earlier = 0; 
    later = 0; 
    count = 0; 

    for (i = earlier; i <= later; i++) { 
     count = count + i; 
    }; 

    return count; 
}; 

我应该有这两个参数,但它没有运行。我觉得我不是足够清楚所以这里是我的指示:

  1. 在设计器中创建的JavaScript 06.js与一般功能:countIntegers() 没有HTML页面。 没有事件处理程序。
  2. 该函数接收两个参数。他们之间(..)。
  3. 使用要用于参数的任何名字,但你可以使用描述性的名字是这样的: 第一个和最后
  4. 计数所有整数从第一个参数second.Here你算了算 ,而不是总计算。
  5. 所有你需要做的就是使用for()循环并返回计数。
  6. 返回整数的个数。使用返回,因为这是一个通用函数。

我对此很陌生,不确定我在这里应该做什么。感谢您的帮助......

回答

2

你设置你的参数回零,不管你。

摆脱这些线路的传递什么。

此外,使用var来定义局部变量。

function processLoop(earlier,later) { 

    var count = 0; 

    for (var i = earlier; i <= later; i++) { 
     count = count + 1; 
    }; 

    return count; 
}; 
+0

感谢您的回复,但我仍然得到一个评分错误...我编辑原始帖子与指示我需要做什么...它应该计算整数的距离来自两个整数。谢谢陌生人,我真的很感谢 – user5953981

0

如果earlierlater旨在为可如果参数传递给函数来设置默认值,可以使用OR||操作。您还应该用++count代替count = count + i以返回earlierlater之间的差异。 <=运营商也代替<运营商。

function processLoop(earlier, later) { 
 

 
    var earlier = earlier || 0, 
 
    later = later || 0, 
 
    count = 0; 
 
    // use `for` loop only if `earlier` does not equal `later` 
 
    // and `later` is greater than `earlier` 
 
    if (typeof earlier === "number" && typeof later === "number") { 
 
    if (earlier !== later && later > earlier) { 
 
     for (i = earlier; i < later; i++) { 
 
     ++count; 
 
     }; 
 
    } else { 
 
     return new Error("earlier is not greater than later") 
 
    } 
 
    return count; 
 
    } else { 
 
    return new TypeError("earlier or later is not a number") 
 
    } 
 
}; 
 

 
console.log("no parameters passed to processLoop:", processLoop() 
 
      , "\n10 passed as later:", processLoop(null, 10) 
 
      , "\ndifference between 25 and 50:", processLoop(25, 50) 
 
      , "\ndifference between 5 and 6:", processLoop(5, 6) 
 
      , "\ndifference between 1 and 1:", processLoop(1, 1) 
 
      , "\nearlier or later is not a number", processLoop("a", "b") 
 
      );

0

function processLoop(earlier,later) { 
 

 
    var count = 0; 
 

 
    for (i = earlier; i < later; i++) { 
 
     count++; 
 
    }; 
 

 
    document.getElementById("demo").innerHTML = count; 
 
};
<html> 
 
<body> 
 

 
<button onclick="processLoop(1,3)">Click me</button> 
 
<p id="demo"></p> 
 

 
</body> 
 
</html>

参数的值不要设置为zero函数内。如果要计算在earlierlater之间,并且不需要包含earlier,请使用i < later而不是i <= later

function processLoop(earlier,later) { 

    count = 0; 

    for (i = earlier; i < later; i++) { 
     count++; 
    }; 

    return count; 
}; 
+0

'<='运营商的目的是什么? 'processLoop(1,1)'会将'1'写入'document',输入数字相等吗? _“返回整数的计数,使用返回是因为这是一个通用函数。”_函数没有返回值? – guest271314

+0

谢谢! THR ONE RAN 100% – user5953981

+0

@ user5953981该函数不符合原始帖子中描述的要求,并将不正确的值写入文档 – guest271314

0

您需要与解释这个问题,因为这是一个有点含糊不清的答案进行试验。如果要计算实数x和y之间的整数,知道间隔是打开还是关闭非常重要。

我不支持一般编写代码,但在这种情况下,这是最好的答案。下面的代码计算整数在一个封闭的实区间,[早,晚]:

function countIntegers(earlier, later) 
{ earlier = Math.ceil(earlier); 
    later = Math.floor(later); 
    for(var i = earlier, count = 0; i <= later; ++i, ++count); 
    return count; 
} 

您可能需要查找什么Math.ceilMath.floor这样做,以及实验的开放式组合和关闭的时间间隔,直到找到一个被标记为正确的。享受:-)