如何查看数字是否在"之间#34;值?

时间:2014-05-03 18:37:42

标签: javascript

//初学者在一个程序中学习Js我被要求开始研究Rock,Paper,Scissors游戏 这是我制作的代码,但电脑总是选剪刀!?任何想法为什么? 任何帮助都会很棒!

  1. 如果computerChoice介于0和0.33之间,则使computerChoice等于"摇滚"。

  2. 如果computerChoice介于0.34和0.66之间,则使computerChoice等于" paper"。

  3. 如果computerChoice介于0.67和1之间,则使computerChoice等于"剪刀"。

  4. var userChoice = prompt ("Do you choose rock, paper or scissors?");
    
    var computerChoice = Math.random();
    
    if (computerChoice === (0 , 0.33)) {
        console.log("rock");
    } else if (computerChoice === (0.34 , 0.66)) {
        console.log("paper");
    } else {
        console.log("scissors");
    }
    

2 个答案:

答案 0 :(得分:7)

首先,你不能只是编写语法 - 它只是不起作用。编程是关于existing rules的应用,其中大多数规则不是你自己的。

在JavaScript中,由于comma-operatorx === (a, b)在语义上等同于x === b(当a表达式没有副作用时),因此显然赢了&# 39;工作。在原始代码中,这确保了前两个条件中没有一个(例如choice === 0.33)匹配 - 所以默认/否则"剪刀"总是被选中。

the general way to check an inclusive range is x >= a && x <= b期间,我们可以依靠if条件评估和"inchworming"的排序来扩大范围,从而做得更好。

if (choice <= 1/3) {
  console.log("rock");
} else if (choice <= 2/3) { /* choice > 1/3, per above */
  console.log("paper");
} else {                    /* choice > 2/3, per above */
  console.log("scissors");
}

或者,我们也可以得到一个谨慎的随机整数

/* get a random number 1, 2, or 3 */
var choice = Math.floor(Math.random() * 3 + 1);

然后可以使用没有范围检查的直接相等

if (choice === 1) {
  console.log("rock");
} else if (choice === 2) {
  console.log("paper");
} else { /* choice === 3 */
  console.log("scissors");
}

答案 1 :(得分:1)

您没有使用有效的JavaScript语法进行数字比较。 JavaScript中没有允许您执行此操作的结构:

if(computerChoice===(0, 0.33)){
    //...
}

请改为尝试:

if(computerChoice > 0 && computerChoice <= 0.33){
    //...
}