Javascript Codeacademy查询

时间:2015-07-25 18:17:29

标签: javascript if-statement

所以我在codecademy上建了一个石头剪刀游戏,正在调整它。我调整的是,当用户写出不适当的选择时,代码就会停止。

一切正常,但当我写“摇滚,纸张或剪刀”时,它仍然说不恰当的选择。

    var userChoice = prompt("Do you choose rock, paper or scissors?");
    //tweaking starts here  
    if (userChoice!=="rock") {
        console.log("inappropriate choice");
    }
    else if (userChoice!=="paper") {
        console.log("inappropriate choice");
    }
    else if (userChoice!=="scissors") {
        console.log("inappropriate choice");
    }; 
    // tweaking ends here

    var computerChoice = Math.random();
    if (computerChoice < 0.34) {
        computerChoice = "rock";
    } else if(computerChoice <= 0.67) {
        computerChoice = "paper";
    } else {
        computerChoice = "scissors";
    } 
    console.log("Computer: " + computerChoice);

    var compare = function(choice1,choice2) {
        if (choice1===choice2) {
            return "The result is a tie!";
        }
        else if (choice1 === "rock") {
            if (choice2==="scissors") {
                return "rock wins";
            }
            else {
             return "paper wins";
            }
        }
        else if (choice1 === "paper") {
            if (choice2 === "rock") {
                return "paper wins";
            }
            else {
                return "scissors wins";
            }
        } 
        else if (choice1 === "scissors") {
            if (choice2 === "rock") {
                return "rock wins";
            }
            else {
                return "scissors wins";
            }
        };    
    };    
        compare(userChoice,computerChoice);

<!-- end snippet -->

2 个答案:

答案 0 :(得分:2)

这是一个经典的if else if阶梯问题。

如Java教程here

中所述
  

但是,一旦满足条件,就会执行适当的陈述[...]并且不评估剩余的条件。

在您的情况下,当您输入&#34; paper&#34;或者&#34;剪刀&#34;,它在第一个分支上突破为userChoice != "rock"。如果您输入&#34; rock&#34;,它会在第二个分支上突破为userChoice != "paper"

最终它没有通过if-else-if阶梯,并最终打印出不适当的选择信息。

为了验证输入,使得用户除了字符串之外不输入任何内容,&#34;摇滚&#34;,&#34;纸张&#34;或者&#34;剪刀&#34;,按如下方式更改您的调整代码:

//tweaking starts here  
if (userChoice!=="rock" && userChoice!=="paper" && userChoice!=="scissors"){
    console.log("inappropriate choice");
}
}; // tweaking ends here

永远记住:

  

梯子只有一个分支被执行...... !!!如果是多个   条件属实,首先遇到的分支应该是   执行。

答案 1 :(得分:0)

这是一个可以帮助您了解if语句逻辑错误的示例:

var userChoice = prompt("Do you choose rock, paper or scissors?");

if ((userChoice != "rock") && (userChoice != "paper") && (userChoice != "scissors")) {
    console.log("inappropriate choice");
} else {
    console.log("appropriate choice!");
}

这是一个JSFiddle:https://jsfiddle.net/j66to3x0/2/