为什么我的for循环在某些情况下没有启动?

Why won't my for-loop start in some cases?

本文关键字:情况下 启动 我的 for 循环 为什么      更新时间:2023-09-26

我在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"));

作为旁注,由于您除以divide,您也应该检查它不为零!

或者,更好的是,不执行实际的除法,然后对商进行检查,只是按照@hindmost建议的那样做:

for (startValue; startValue <= endValue; startValue++) {
  if (startValue % divide == 0) {
   count++; 
  }
}