2016-02-20 50 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這樣做,以及實驗的開放式組合和關閉的時間間隔,直到找到一個被標記爲正確的。享受:-)