簡體   English   中英

如何使用 while-loop、do-loop 從 1 到用戶輸入的數字求和?

[英]How to sum numbers from 1 through user's entry, using while-loop, do-loop?

我正在嘗試使用 whileloop 或 doloop 完成以下代碼以實現從 1 到 100 的數字總和(用戶的輸入必須是 1-100)。 我是新手,非常感謝任何幫助!

在下面的代碼中,我使用提示方法來獲取用戶條目。 編寫代碼,對數字求和; 從 1 到用戶的輸入。 我在警告框中顯示了結果。 現在,我的挑戰是如果用戶的輸入超出 1-100 范圍,我想顯示一條錯誤消息。 之后,如果用戶單擊取消並停止顯示提示框,我不想進行任何計算。

<!DOCTYPE html>
        <html>
        <head>
        <title>Sum of Numbers</title>
     <script>
      var numbers = prompt("Enter a  number 1-100");
    
      while (numbers!=null && (isNaN(parseInt(numbers)) || parseInt(numbers) >100 || parseInt(numbers) <1)) {
          numbers = prompt("Try again.Enter a  number 1-100");
      }
      if (numbers !=null){
            alert("Finally you entered a correct number");
      }
     
      var sum = 0;
      var numOfLoops = numbers;
      var counter = 1;
      do {
        sum+=counter;
        counter++;
      } while (counter<=numOfLoops)
      alert ("sum=" +sum);
    
     </script>
    
    </head>
    <body>
        <script>
        document.write("<h1>Sum of Numbers</h1>");
            document.write("The sum of numbers from 1 to = " + numbers +  "&nbsp;is = "  +
                + sum + "<br><br>");
        </script>
    
    </body>
    </html>

只需在用戶輸入正確輸入的條件內移動計算邏輯即可。 這將確保當您單擊取消按鈕時提示會自動關閉(當用戶單擊取消時,提示返回null

    <script>
        var numbers = prompt("Enter a  number 1-100");

        while (numbers != null && (isNaN(parseInt(numbers)) || parseInt(numbers) > 100 || parseInt(numbers) < 1)) {
            numbers = prompt("Try again.Enter a  number 1-100");
        }
        if (numbers != null) {
            alert("Finally you entered a correct number");

            var sum = 0;
            var numOfLoops = numbers;
            var counter = 1;
            do {
                sum += counter;
                counter++;
            } while (counter <= numOfLoops)
            alert("sum=" + sum);
        }

    </script>

您可以簡單地使用do…while來解決您的問題,例如

 let n = null; do { n = parseInt(prompt('Enter an int number between 1 and 100')); } while (isNaN(n) || (n < 1 || n > 100)); let sum = n * (n + 1) / 2; alert('The sum of all int numbers from 1 to ' + n + ' is: ' + sum);

注意n 個integer 數字的總和可以計算為n * ( n + 1) / 2,復雜度為O (1) - 降低了for循環的O ( n ) 復雜度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM