为什么在某些情况下我的 for 循环不启动?
Why won't my for-loop start in some cases?
我在 javascript 中编写了一些简单的代码,让您输入间隔的起始值和结束值并指定分母。输入后,程序将遍历区间并检查有多少数字可以被指定的分母整除。
一开始似乎工作得很好,但在某些情况下程序根本不会 运行 循环,我很难弄清楚为什么。
我的代码:
//declarations
var startValue = prompt ("pick a starting value:");
var endValue = prompt ("pick an ending value:");
var divide = prompt ("pick a denominator");
var count = 0;
//control divisibility
for (startValue; startValue <= endValue; startValue++) {
var quotient = startValue/divide;
if (quotient % 1 == 0) {
count++;
}
}
//result
alert("There are " + count + " numbers divisible by " + divide + " in the interval");
下面是一些 worked/not 与程序一起工作的输入值
(显示为"startNr, endNr, divide"):
工作:
3, 92, 8
1, 100, 1
17、200、12
24, 379, 22
18、90、18
不工作:
5, 25, 5
7, 21, 7
2, 108, 8
谢谢。
这里的问题是 prompt
returns 作为 字符串 的输入,而您没有将其转换为数字。
当您比较字符串时,应用字典顺序,并基于这样的顺序,例如,"25"
在 "5"
之前
console.log("25" < "5");
因此您应该将您的声明替换为:
var startValue = Number(prompt ("pick a starting value:"));
var endValue = Number(prompt ("pick an ending value:"));
var divide = Number(prompt ("pick a denominator"));
附带说明一下,因为你除以 divide
,你还应该检查它不为零!
或者,更好的是,不要执行实际的除法然后检查商,只需按照@hindmost 的建议进行即可:
for (startValue; startValue <= endValue; startValue++) {
if (startValue % divide == 0) {
count++;
}
}
我在 javascript 中编写了一些简单的代码,让您输入间隔的起始值和结束值并指定分母。输入后,程序将遍历区间并检查有多少数字可以被指定的分母整除。
一开始似乎工作得很好,但在某些情况下程序根本不会 运行 循环,我很难弄清楚为什么。
我的代码:
//declarations
var startValue = prompt ("pick a starting value:");
var endValue = prompt ("pick an ending value:");
var divide = prompt ("pick a denominator");
var count = 0;
//control divisibility
for (startValue; startValue <= endValue; startValue++) {
var quotient = startValue/divide;
if (quotient % 1 == 0) {
count++;
}
}
//result
alert("There are " + count + " numbers divisible by " + divide + " in the interval");
下面是一些 worked/not 与程序一起工作的输入值
(显示为"startNr, endNr, divide"):
工作:
3, 92, 8
1, 100, 1
17、200、12
24, 379, 22
18、90、18
不工作:
5, 25, 5
7, 21, 7
2, 108, 8
谢谢。
这里的问题是 prompt
returns 作为 字符串 的输入,而您没有将其转换为数字。
当您比较字符串时,应用字典顺序,并基于这样的顺序,例如,"25"
在 "5"
console.log("25" < "5");
因此您应该将您的声明替换为:
var startValue = Number(prompt ("pick a starting value:"));
var endValue = Number(prompt ("pick an ending value:"));
var divide = Number(prompt ("pick a denominator"));
附带说明一下,因为你除以 divide
,你还应该检查它不为零!
或者,更好的是,不要执行实际的除法然后检查商,只需按照@hindmost 的建议进行即可:
for (startValue; startValue <= endValue; startValue++) {
if (startValue % divide == 0) {
count++;
}
}