2017-02-21 3 views
1

Ich habe keine Ahnung, wo der Fehler mehr ist. Es wurde zuerst gesagt, dass ich einen unerwarteten Bezeichner hatte, dann hatte ich einen unerreichten}, jetzt habe ich eine illegale Rücksendeaussage. Ich brauche nur etwas Hilfe. Vielen Dank.Ich habe keine Ahnung, wo der Fehler mehr ist

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

Ihre fehlende geschweifte geschweifte Klammer. – geeves

+0

Funktioniert es, ComputerChoice als eine Nummer zuerst zu setzen und dann als eine Zeichenfolge später? Nur neugierig. Ich würde wahrscheinlich das 2 Variablen sein, eine für jeden Typ. – Forklift

+1

Zeile 31 hat ein "else if", das einem "else" folgt. Das "Else If" wird nie erreicht werden. In JavaScript ist es OK für eine Variable, eine Zahl zu sein und dann später eine Zeichenkette zu sein – geeves

Antwort

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

ordnungsgemäß gegliederten Code kann geschweifte Klammern fehlen helfen. Zu der Zeit, wenn etwas 4 Mal eingerückt ist, ist es Zeit zu sehen, ob es refaktoriert werden kann.

Zum Beispiel:

Die erste, wenn eine Rückkehr hat. Es gibt keinen Grund, danach ein "else if" zu haben. Das wird einen Gedankenstrich beseitigen. Das gleiche kann gesagt werden ("choice2 ===" rock "). Vertrauen Sie, dass, wenn eine Rückkehr geschrieben wird, dass es tatsächlich zurückkommt.

+0

Da dies wie ein codewars.com-Problem oder ein anderes Problem aussieht, denke ich, dass es am besten ist, wenn Sie es ein wenig umgestalten, anstatt refaktorierten Code zu erhalten. :) Viel Glück, du wirst es bekommen. – geeves

+1

Upvoted für große Beratung unter dem Codebeispiel. – Forklift

+1

geeves, danke für den Rat und die Hilfe! Es hat mir wirklich geholfen und mich dazu gebracht, meinen Fehler zu sehen. Vielen Dank. Up für das Feedback und die Erklärung abgestimmt. –

Verwandte Themen