javascript - 为什么我的 for 循环在某些情况下无法启动?

标签 javascript for-loop division

我用 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/

相关文章:

javascript - 自定义 Superfish 下拉菜单后的问题

javascript - 找出每个子数组中任意一个元素可以形成的最大乘积

javascript - 如何将 HTML 脚本函数传输到外部 JavaScript 文件?

arrays - 奇怪的 golang "append"行为(覆盖 slice 中的值)

javascript - 使用 for 循环创建包含对象数组的对象

c++ - 如何实现加法除法?

haskell - 除法结果层

javascript - 如果滚动到 div 不存在,则重定向到主页

go - big.Float 中的 Div 和 Mod

python - 循环元组并获取从高到低的转换列表的更有效方法