【问题标题】:I don't know why my console always outputs the same thing我不知道为什么我的控制台总是输出相同的东西
【发布时间】:2020-12-11 04:46:35
【问题描述】:

我得到了一个简单的场景:“编写一个程序来模拟两个骰子的滚动。继续掷骰子,直到骰子的总和为 7 或 11。您的程序应显示每次掷骰的结果。"

这很容易,我知道。但是每次打印的总和总是相同的,并且没有正确添加。可能只是没有看到正确的东西,但我是一个超级初学者。

注意——在这种情况下,write() 函数只是在屏幕上显示文本。 这是我的代码:

var die1 = randomNumber(1, 6);
var die2 = randomNumber(1, 6);
var sum = die1 + die2;
while (!(sum == 7 || sum == 11)) {
  die1 = randomNumber(1,6);
  die2 = randomNumber(1,6);
  write("Rolled " + die1 + " and " + die2 + ", sum is " + sum);
}
write("Done.");

【问题讨论】:

  • while 循环中,您正在重新计算骰子的值(通过重新滚动)。您还应该重新计算另一个变量吗?

标签: javascript while-loop add


【解决方案1】:

您忘记在 while 循环中重新计算 sum

var die1 = randomNumber(1, 6);
var die2 = randomNumber(1, 6);
var sum = die1 + die2;
while (!(sum == 7 || sum == 11)) {
  die1 = randomNumber(1,6);
  die2 = randomNumber(1,6);
  //  FIX: recalculate sum
  sum = die1 + die2;
  write("Rolled " + die1 + " and " + die2 + ", sum is " + sum);
}
write("Done.");

使用 do-while 循环也会更简洁:

var die1, die2, sum;
do {
  die1 = randomNumber(1,6);
  die2 = randomNumber(1,6);
  sum = die1 + die2;
  write("Rolled " + die1 + " and " + die2 + ", sum is " + sum);
} while(!(sum == 7 || sum == 11));
write("Done.");

注意:这也取决于写在randomNumber()函数中的逻辑。

【讨论】:

  • 对不起,我只是想了解更多。如果sum 是一个全局变量,为什么我需要在while 循环中再次调用它?而且我从来没有学过 do-while 循环,我会更多地研究它们!谢谢。
  • 因为sum是一个变量,如果你不赋值,它总是相同的值。在您的循环中,您一次又一次地检查sum 而没有更新它,因此循环将永远卡住。
猜你喜欢
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 2022-07-06
  • 2013-08-30
  • 2023-03-16
  • 2023-02-25
  • 2022-11-17
  • 2021-12-11
相关资源
最近更新 更多