【问题标题】:How to properly use if else and else if如何正确使用 if else 和 else if
【发布时间】:2015-01-29 06:11:06
【问题描述】:

我正在使用 codecademy 课程,并且正在学习如何使用随机数字制作剪刀石头布游戏。它说我做得“很好”,但每次我试图正确地让每个人正确地表现出他们各自的条件时,它都会搞砸。

请留下评论指出错误并在未来避免它的提示。

条件 - 0 到 .33 = 摇滚 -.34 到 .66 = 纸张 -.67 到 1 = 剪刀

JS 代码

var userChoice = prompt("Rock, Paper, or Scissors?");

var computerChoice = Math.random();

console.log(computerChoice);

if  (computerChoice <= 0.33) {
    console.log("Rock");
}

else if (0.34 < computerChoice < 0.66) {
   console.log("Paper");   
}

else {
    console.log("Scissors");   
}

【问题讨论】:

  • 如果您需要单独评估它们或使用 &&

标签: javascript function random console.log


【解决方案1】:

也许问题出在这一行:

else if (0.34 < computerChoice < 0.66) {

试试这个:

else if (0.35 < computerChoice && computerChoice < 0.67) {

【讨论】:

    【解决方案2】:

    最好阅读编程书籍,或者阅读一些关于循环的在线教程 无论如何使用下面的代码它会解决你的问题

        var userChoice = prompt("Rock, Paper, or Scissors?");
    
        var computerChoice = Math.random();
    
        console.log(computerChoice);
    
        if  (computerChoice <= 0.33) 
        {
            console.log("Rock");
        }
    
    else if(computerChoice>=0.34&&computerChoice<=0.66)
         {
           console.log("Paper"); 
         }
    else if(computerChoice>=0.67&&computerChoice<=1)
         {
           console.log("Scissors");      
         }
    
       else
        {
          console.log("Invalid input");  
        }
    

    【讨论】:

      【解决方案3】:

      每个人似乎都犯的错误是你可以有 0.331 并且评估为“剪刀”。更合理的逻辑是:

      var result = (computerChoice >= 0.67 ? "Scissors" : (computerChoice >= 0.34 ? "Paper" : "Rock"));
      console.log(result);
      

      【讨论】:

        【解决方案4】:

        我不想成为第十个回答者,但所有给出的答案都是错误的。你懂的

        else if (0.34 < computerChoice < 0.66) {
        

        语法不好,对吧?好的,所以我们也解决偏差问题:0.33 小于三分之一,并且 0.33 和 0.34 之间的所有数字都默认为剪刀。如果你想要一个均匀分布,最简单的方法是制作一个提前退出的函数:

        function computerChoice() {
            var v = Math.random();
        
            if (v < (1.0 / 3.0)) return "rock";
            if (v < (2.0 / 3.0)) return "paper";
            return "scissors";
        }
        

        这与双精度浮点所允许的一样好,这对于大多数用途来说已经足够了。

        【讨论】:

        • 我注意到您遗漏了 else if/else 关键字。您是在暗示程序只会在它们上面运行并选择它首先选择的正确选项吗?
        • 这里不需要else。将其放入一个函数中,您可以改为使用提前返回。该函数平均每次调用仅使用 1.6 次比较。我认为它也更容易理解。 if/else 的长字符串可能会令人困惑且容易出错。
        【解决方案5】:
        if(computerChoice>=0&&computerChoice<=0.33)
        {
          console.log("Rock");
        }
        else if(computerChoice>=0.34&&computerChoice<=0.66)
        {
          console.log("Paper"); 
        }
        else if(computerChoice>=0.67&&computerChoice<=1)
        {
          console.log("Scissors");      
        }
        

        您好,我假设您验证的随机数介于 0 到 1 之间。

        【讨论】:

        • 嗯。不知道你可以不止一次地“else if”。
        • 你意识到你在这里分布不均,因为 0.33 不到三分之一,而且 .33 和 .34 之间的所有数字都默认为剪刀。
        猜你喜欢
        • 2012-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-11
        • 1970-01-01
        • 2012-11-02
        • 2019-04-25
        相关资源
        最近更新 更多