【问题标题】:Why does this while loop loop forever?为什么这个while循环永远循环?
【发布时间】:2021-08-22 09:25:26
【问题描述】:

我曾尝试查看文档但无法弄清楚。我的 while 循环不会停止并永远打印“ya”。我做错了什么?

var ya = 1;
Formitivegrades = [100, 95, 100, 85, 100]
Formitiaveav1 = Formitivegrades[0] + Formitivegrades[1] + Formitivegrades[3] + Formitivegrades[4] + Formitivegrades[2]
Formitiaveav2 = Formitiaveav1 / 5

sumgrades = [100]
sumav1 = ya + sumgrades[0]
sumav2 = sumav1 / 2

averge = .4 * Formitiaveav2 + .6 * sumav2

while(averge < 95){
    console.log(ya)
    ya++;
}

console.log(averge)

【问题讨论】:

  • 需要在while循环中重新计算平均值
  • averge 永远不会改变。所以循环永远是真的
  • averge 将永远是 68.7 并且它不会改变,所以循环永远运行。

标签: javascript while-loop


【解决方案1】:

不要将等号= 视为永远保证的等式,就像在数学中那样。在编程中,它是一次性的任务。赋值语句只在那个时刻给变量一个新值。如果它们之后更改值,则可能会破坏相等性。

如果 ya 更新不会导致 sumav1 被重新计算。 sumav2 也不会在 sumav1 更改时更改,avrgesumav2 更改时也不会更改。 averge 永远保持相同的值,除非您明确更新它。

为此,您需要在每次更改ya 时重新计算所有变量。这样averge 最终可以到达95 并导致循环结束。

while(averge < 95){
    console.log(ya)
    ya++;

    sumav1 = ya + sumgrades[0]
    sumav2 = sumav1 / 2
    averge = .4 * Formitiaveav2 + .6 * sumav2
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2018-03-17
    相关资源
    最近更新 更多