为了账号安全,请及时绑定邮箱和手机立即绑定

有条件的问题,因为如果[closed],结果始终是else

有条件的问题,因为如果[closed],结果始终是else

慕森卡 2021-04-16 18:15:52
我正在尝试制作一个简单的程序,其中有5个掷骰子,而最后一个获胜的人数最多,问题是if / else if,因为显示的唯一结果是else if if,even虽然应该随机我试过在一开始就不将变量设置为0,而是切换位置。function RollDie() {  Math.floor(Math.random() * 6);  var diceRoll = Math.floor(Math.random() * 6) + 1;}var player1 = 0;var player2 = 0;player1 = RollDie() + RollDie() + RollDie() + RollDie() + RollDie();player2 = RollDie() + RollDie() + RollDie() + RollDie() + RollDie();if (player2 > player1) {  text("player 2 has won", 180, 100);} else if (player2 < player1) {  text("player 1 has won", 180, 100);}我希望最终结果是随机的,但不是。始终是if选项
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

您需要返回随机值。


如果采用不带return语句的函数,则该函数undefined默认返回。


将该值用于加法运算undefined,然后通过加法将其转换为数字,但失败了,您将获得该值NaN,这意味着您将获得一个非数字的数字。任何带有NaNreturn的数字相加,NaN即您为两个玩家获得的值。


在这种情况下,NaN始终与和进行比较,false因此您永远不会获得成功的信息。


function RollDie() {

    return Math.floor(Math.random() * 6) + 1;

    // ^^^

}


var player1 = 0;

var player2 = 0;


player1 = RollDie() + RollDie() + RollDie() + RollDie() + RollDie();

player2 = RollDie() + RollDie() + RollDie() + RollDie() + RollDie();


console.log(player1);

console.log(player2);


if (player2 > player1) {

    console.log("player 2 has won");

} else if (player2 < player1) {

    console.log("player 1 has won");

}


console.log(undefined + undefined); // NaN


查看完整回答
反对 回复 2021-04-29
  • 2 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信