我在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
感谢。
答案 0 :(得分:2)
此处的问题是prompt
将输入作为字符串返回,而您不会将其转换为数字。
比较字符串时,会应用词典排序,例如,基于此类排序,"25"
出现在"5"
之前
console.log("25" < "5");
&#13;
所以你应该用以下代码替换你的声明:
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++;
}
}