我用 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");
下面是一些适用于/不适用于该程序的输入值
(显示为“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
将输入返回为字符串,而您没有将其转换为数字。
比较字符串时,将应用字典顺序,并基于此顺序,例如,"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"));
顺便说一句,由于您除以除
,因此您还应该检查它是否不为零!
或者,更好的是,不要执行实际的除法,然后检查商,只需按照 @hindmost 的建议进行即可:
for (startValue; startValue <= endValue; startValue++) {
if (startValue % divide == 0) {
count++;
}
}
关于javascript - 为什么我的 for 循环在某些情况下无法启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32966021/