如何使用 while 循环、do 循环对从 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 + " is = " +
+ sum + "<br><br>");
</script>
</body>
</html>
您可以简单地使用 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.B. 前 n 个整数之和可以计算为 n * (n + 1) / 2,具有 O(1) 复杂度 - 减少 O(n) for
循环的复杂性。
只需将计算逻辑移动到用户输入正确输入的条件内即可。这将确保在您单击取消按钮时提示自动关闭(当用户单击取消时提示 returns 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>
我正在尝试使用 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 + " is = " +
+ sum + "<br><br>");
</script>
</body>
</html>
您可以简单地使用 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.B. 前 n 个整数之和可以计算为 n * (n + 1) / 2,具有 O(1) 复杂度 - 减少 O(n) for
循环的复杂性。
只需将计算逻辑移动到用户输入正确输入的条件内即可。这将确保在您单击取消按钮时提示自动关闭(当用户单击取消时提示 returns 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>