Luis Gonzalez
Luis Gonzalez

Reputation: 105

JavaScript SyntaxError: Unexpected token else

I have this code for a rock, paper, scissors game that is basically homework. I have double-checked and it seems to be fine, however, when I run it it says:

SyntaxError: Unexpected token else, 

any help will be very appreciated :) Please note that I am a newbie, so if the question is dumb, please be nice and help <3

I just edited the code a bit, since I had many "Overlook" mistakes. I also wanted to clarify that I need all the code located after the function statement to be inside the function, that is why I don't close the first { right away. PD: Now I get: SyntaxError: 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);

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 if (choice1 ==== "paper") {
            if (choice2 === "rock") {
                return "paper wins";
            else if (choice2 === "scissors") {
                return "scissors wins"; }

            else {
                return "Paper wins"; }    
            }
        }
}

compare(userChoice, computerChoice)

Upvotes: 1

Views: 297

Answers (4)

Adam Buchanan Smith
Adam Buchanan Smith

Reputation: 9457

Ok, to stay true to your homework, I kept the same format just fixed the issues.

here it is:

  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!";
    }
    if (choice1 === "paper") {
      if (choice2 === "rock") {
        return "Paper wins!";
      } else {
        return "Paper looses!";
      }
    } else if (choice1 === "rock") {
      if (choice2 === "scissors") {
        return "Rock wins!";
      } else {
        return "Rock looses!";
      }
    }
    if (choice1 === "scissors") {
      if (choice2 === "paper") {
        return "Scissors wins!";
      } else {
        return "Scissors looses!";
      }
    }


  }
  compare(userChoice, computerChoice)

Upvotes: 1

Matthew Herbst
Matthew Herbst

Reputation: 32003

Always properly format your code. You are missing a bunch of } before the else statements. Always use semi-colons at the end of a line (no, you don't technically need to be it is extremely good practice).

Also, you need to watch your equals. You had one ==== instead of ===

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 if (choice1 === "paper") {
        if (choice2 === "rock") {
          return "paper wins";
        } else if {
          return "paper wins";
        } else {
          return "Paper wins";
        }    
      }
    }
}

compare(userChoice, computerChoice)

Upvotes: 1

John Hascall
John Hascall

Reputation: 9416

You will find your debugging much easier if you

  1. properly indent,
  2. use braces for any but the simplest if statements

For example:

if (choice1 == choice2) return "tie";         /* simple 1-line if is ok */
if (choice1 == "rock") {
    if (choice2 == "scissors") {              /* more complex, always use braces */
        return "rock wins";                   /* always indent nicely */
    } else {
        return "paper wins";
    }
}
/* ... and so on ... */

Upvotes: 1

Adam Buchanan Smith
Adam Buchanan Smith

Reputation: 9457

Consider re-writing it in a little easier way.

See fiddle https://jsfiddle.net/DIRTY_SMITH/c7ww2hmz/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";
  }
  alert("the computer picked " + computerChoice);
  if ((computerChoice === "rock" && userChoice === "papper") || (computerChoice === "papper" && userChoice === "scissors") || (computerChoice === "scissors" && userChoice === "rock")) {
    alert("you won");
  } else if (computerChoice == userChoice) {
    alert("It's a tie");
  } else {
    alert("you loose");
  }

Upvotes: 1

Related Questions