【问题标题】:How to sum numbers from 1 through user's entry, using while-loop, do-loop?如何使用 while-loop、do-loop 从 1 到用户输入的数字求和?
【发布时间】:2020-07-12 19:26:19
【问题描述】:

我正在尝试使用 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>

【问题讨论】:

    标签: javascript while-loop do-loops


    【解决方案1】:

    只需在用户输入正确输入的条件内移动计算逻辑即可。这将确保当您单击取消按钮时提示会自动关闭(当用户单击取消时提示返回 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>
    

    【讨论】:

      【解决方案2】:

      您可以简单地使用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个整数之和可以计算为n * (n + 1 ) / 2,具有 O(1) 复杂度 - 降低 for 循环的 O(n) 复杂度。

      【讨论】:

        猜你喜欢
        • 2020-11-02
        • 2014-01-11
        • 1970-01-01
        • 2016-03-07
        • 2019-07-03
        • 2012-08-10
        • 2013-12-26
        • 2015-12-20
        相关资源
        最近更新 更多