What if choice 1 is scissors?


#1



I keep getting a "Unexpected token {" message but I can't seem to find the problem anywhere?


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);

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(choice1 === "scissors") {
    if(choice2 === "rock") {
        return "rock wins"; 
    }
    else{ return "scissors wins";
    }
}
};
console.log(compare(userChoice, computerChoice));


#2

Look closely at your line of code for (choice 1 === "scissors").


#3

How abut this one? Can some tell me whats wrong? keeps telling me i have a unexpected token.

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);
//==================================//
compare = function(choice1,choice2) {
if(choice1 === choice2) {
return "The result is a tie!";
}
else if(choice1 === ("paper"){
}
if(choice2 === ("rock"){ return ("rock wins")
}
else{ return ("scissors wins")
}
//==================================//
compare = function(choice1,choice2) {
if(choice1 === choice2) {
return "The result is a tie!";
}
else if(choice1 === ("scissors"){
}
if(choice2 === ("rock"){ return ("rock wins");
}
else{ return ("paper wins");
}
//==================================//
compare = function(choice1,choice2) {
if(choice1 === choice2) {
return "The result is a tie!";
}
else if(choice1 === ("rock"){
}
if(choice2 === ("scissors"){ return ("scissors wins");
}
else{ return ("paper wins");
}
};
console.log(compare(userChoice, computerChoice));


#4

Hi you didn't close all your else if statement }.... then look well to all your if and else if condition

else if(choice1 === ("paper")
if(choice2 === ("rock")

you didn't close the condition
so it should be

else if(choice1 === ("paper"))
if(choice2 === ("rock"))

#5

There is till something wrong, now it says "Your code returned 'paper wins' instead of 'undefined' when the inputs are scissors and rock". and it says this with every inpute.

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);
//==================================//
compare = function(choice1,choice2) {
if(choice1 === choice2) {
return "The result is a tie!";
}
else if(choice1 === ("paper")){
}
if(choice2 === ("rock")){ return ("rock wins")
}
else{ return ("scissors wins")
}
};
//==================================//
compare = function(choice1,choice2) {
if(choice1 === choice2) {
return "The result is a tie!";
}
else if(choice1 === ("scissors")){
}
if(choice2 === ("rock")){ return ("rock wins");
}
else{ return ("paper wins");
}
};
//==================================//
compare = function(choice1,choice2) {
if(choice1 === choice2) {
return "The result is a tie!";
}
else if(choice1 === ("rock")){
}
if(choice2 === ("scissors")){ return ("scissors wins");
}
else{ return ("paper wins");
}

};
console.log(compare(userChoice, computerChoice));


#6

You don't need to repeat this part ..you just need of one

compare = function(choice1,choice2) {
    if(choice1 === choice2) {
        return "The result is a tie!";
    }

then your else if statement should have that structture

else if (condition) { //close the else if statement
    if (condition) { //close the if statement

    } //open the if statement
    else { //open the else statement

    } //close the else statement
}//close the else if statement

#7

I'm stuck on this section as well. I keep getting an "unexpected token else" and I just cannot find the problem. I'm hoping another set of eyes will help me to be able to spot the problem.


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);
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";
}
}
console.log(compare(userChoice,computerChoice));


#8

@mzicc

A pair of curly-brackets-{ } is used to encapsulate a so-called code-block !!!!
(have a goooood look at the IF ELSE-IF IF ELSE statement structure )

Please read
http://www.codecademy.com/forum_questions/559dcb4be39efe550f00006b
and concentrate on:

  • the creation of the compare function
  • the truth-table
  • the build of the IF ELSE-IF statement structure as part of the compare FUNCTION-BODY
  • the execution of the compare function (keeping in mind that the return statement is used )

#9

Hi,

I read all the comments but cannot find what I am doing wrong :

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);

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"
    }
}

};

console.log(compare("userChoice", "computerChoice"));

Anyone to help ?

Thx


#10

ps : it keeps telling me "Make sure to call your compare function with userChoice and computerChoice as the arguments!"


#11

the console.log and** " " ** are not needed when calling the function.
try just compare(userChoice,computerChoice);


#12

@abelbrown
They want you to call the compare function
using the variables userChoice and computerChoice as arguments
but then you use 2 strings as the arguments !!!!


#13

thanks for the special warning


#14

thank you very much for the input


#15

@abelbrown
Here the story of parameter and argument in a function environment....

the FUNCTION talk

var myFunc = function( param1, param2) {
       //Begin of  anonymous FUNCTION-BODY
       //VARIABLE -myFunc- has an -anonymous function- assigned
       //this -anonymous function- has 2 PARAMETERS param1 and param2
       //param1 and param2 PARAMETERS are used 
       //as -local- VARIABLES throughout the FUNCTION-BODY

      console.log( param1 + " and " + param2 ) ;

      //End of anonymous FUNCTION-BODY
};

If you want to call/execute the anonymous function
you will have to add a pair of parentheses to the variable myFunc
like
myFunc();
As the anonymous function was defined
as having 2 parameters
you have to provide 2 arguments
in our case 2 string VALUES "Alena" and "Lauren"
like
myFunc("Alena","Lauren");

some quotes from the outer-world:

**argument is the value/variable/reference being passed in,
parameter is the receiving variable used within the function/block**

OR

**"parameters" are called "formal parameters",
while "arguments" are called "actual parameters".**

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

function with 1 parameter using return-statement

var myFunction = function( param1 ) {
       //Begin of FUNCTION-BODY
       //myFunction =function= has 1 PARAMETER param1
       //this param1 PARAMETER is used as a -local- VARIABLE
       //throughout the FUNCTION-BODY

      return param1;

      //End of FUNCTION-BODY
      };

you have defined a myFunction function
which takes 1 parameter param1
this param1 parameter is used
as a variable throughout the FUNCTION-BODY.

If you want to call/execute this myFunction function
and this myFunction function was defined
as having 1 parameter param1
you will have to provide 1 argument
in our case a "number VALUE" 4
myFunction( 4 );

some quotes from the outer-world:

**argument is the value/variable/reference being passed in,
parameter is the receiving variable used within the function/block**

OR

**"parameters" are called "formal parameters",
while "arguments" are called "actual parameters".**

============================================

As you are using the return-statement in your myFunction function
you will only get a return-value no-display.
You can however capture this return-value in a variable
and then use the console.log()-method to do a display.

var theResult = myFunction( 4 );
console.log( theResult );

OR directly

console.log( myFunction( 4 ) );

#16

thank you very much for this detailed explanation


#17

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.