首页 > 解决方案 > 调用函数并在 while 循环内分配值。骰子作业问题

问题描述

我每次都不确定。我似乎无法为骰子 1 和骰子 2 提供任何输出。

我将 while 语句更改为 for 语句,看看这是否是问题所在。我试图将条件(numberOfSides < 3 && dice1 != dice2 但这会继续提示我输入一个新的 numberOfSides。我基本上已经在尝试重新排列变量时弄乱了这个东西。

    return Math.floor(Math.random() * (max + 1 - min)) + min;
}
var numberOfSides2 = numberOfSides
var dice2 = 0;
var dice1 = 0;
var numberOfRoles = 0;
var numberOfSides = parseInt(prompt("how many sides does your dice have, "));
while (numberOfSides < 3) {
        numberOfSides = parseInt(prompt("enter the amount a number greater than 3, "));
    }
while (dice1 != dice2) {
    dice1 === getRandomInt(numberOfSides, numberOfSides2);
    dice2 === getRandomInt(numberOfSides, numberOfSides2);
    ++numberOfRoles}
    if (dice1 != dice2) {
        alert(dice1);
    }

我不断收到未定义的消息。我越是尝试修复它并重写它,我似乎犯的错误就越多。我应该让它看起来像这样,但首先,我想确保我可以在运行一个函数后让它输出一些东西。

你的骰子有几面?-10 抱歉,这不是有效的大小值。请选择一个正数。你的骰子有几面?6

谢谢!开始了 ...

  1. 1 号骰子是 5,2 号骰子是 3。
  2. 1 号骰子是 2,2 号骰子是 2。
  3. 1 号骰子是 1,2 号骰子是 5。
  4. 1 号模具是 5,2 号模具是 1。...(这些三个点表示输出继续进行,但只是不用于样本,因此我们节省了空间)
  5. 1号骰子是1,2号骰子是1。

你有蛇眼!最后!尝试16号!一路上,你掷了 5 次双倍骰子 #1 的平均掷骰数为 2.95 骰子 #2 的平均掷骰数为 3.20

标签: javascript

解决方案


  1. 我看不到 numberOfSides2 变量的意义,因为 getRandomInt 函数总是将 1 作为其最小值,并将用户的输入作为最大值。
  2. '===' 是一个比较运算符,因此您不能使用它将骰子数分配给随机整数。
  3. 目前尚不清楚您希望循环在什么时候停止,因此当用户滚动双倍时,以下代码会停止。

getRandomInt = (min, max) => {
  return Math.floor(Math.random() * (max + 1 - min)) + min;
};

let numOfSides = parseInt(prompt('how many sides does your dice have, '));
let dice1 = getRandomInt(1, numOfSides);
let dice2 = getRandomInt(1, numOfSides);
let numOfRoles = 1;

while (numOfSides < 3) {
  numOfSides = parseInt(prompt('enter the amount a number greater than 3, '));
}

while (dice1 != dice2) {
  dice1 = getRandomInt(1, numOfSides);
  dice2 = getRandomInt(1, numOfSides);
  numOfRoles++;
  console.log(dice1);
  console.log(dice2);
  console.log('---');
}

if (dice1 === dice2) {
  console.log('matching pair is ' + dice1);
}

要回答您的问题,您的代码将始终为 dice1 和 dice2 的值返回 0,因为您使用的是 '===' 而不是 '='。


推荐阅读