Inappropriate choice


#1
  var userChoice = prompt("Do you choose rock, paper or scissors?");
            
    var computerChoice = Math.random();
    if (computerChoice < 0.34) {
    	computerChoice = "rock";
    } else if(computerChoice <= 0.67) {
    	computerChoice = "paper";
    } else {
    	computerChoice = "scissors";
    } 
    console.log("Computer: " + computerChoice);
    console.log("You: " + userChoice);


    var compare = function(choice1, choice2) {
        if ((userChoice != "rock") || (userChoice != "paper") || (userChoice != "scissors")) {
             window.alert("You must choose 'rock', 'paper' or 'scissors'");}
        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)

Hi, I've checked a similar question on this forum but there was no reply. No matter what the answer is, the window keeps popping up. I wanna make it pop up only if the answer is different from the valid choices, so I added this
if ((userChoice != "rock") || (userChoice != "paper") || (userChoice != "scissors")) {
window.alert("You must choose 'rock', 'paper' or 'scissors'");}

Does anyone know what's wrong with the code?


#2

yes, the comparison is wrong. You should do:

if (userChoice != "rock" && userChoice != "paper" && userChoice != "scissors")

you want to check that the userChoice is not rock, paper and scissors


#3

Riiiight! That makes sense, i thought it was just separating the conditions, didn't know it was an operator.
Thanks, it was driving me crazy!