【问题标题】:I'm I nesting these if/else if statements correctly in JavaScript?我是否在 JavaScript 中正确嵌套了这些 if/else if 语句?
【发布时间】:2019-07-18 11:19:56
【问题描述】:

我正在用 JavaScript 开发一个石头剪刀布游戏,我必须让用户知道是否有平局以及除了石头剪刀布之外是否有无效的用户选择,所以我想嵌套 if/else 语句是合适的。我对 JS 很陌生,无法判断我的代码不起作用的原因是由于嵌套不正确还是其他原因。我得到的只是意外令牌的解析错误。

var UserChoice = window.prompt("Select rock, paper, or scissors");

var computChoice = Math.random();
if (computChoice <= 0.33) {
    computChoice = "scissors";
} else if (computChoice <= 0.66 && computChoice > 0.33) {
    computChoice = "paper";
} else {
    computChoice = "rock";
}

if (UserChoice === "paper") {
    if (UserChoice === "paper" && computChoice === "rock") {
        window.alert("You chose paper and the computer chose rock! You win! Paper covers rock");  
    } else if (UserChoice === "paper" && computChoice === "paper") {
        window.alert("It's a tie!");
    } else if (UserChoice === "paper" && computChoice === "scissors") {
        window.alert("You lose! You chose paper and computer chose scissors. Scissors cut paper!");
    } 
} else if (UserChoice === "scissors") {
    if (UserChoice === "scissors" && computChoice === "paper") {
        window.alert("You chose scissors and the computer chose paper! You win! Scissors cut paper.");
    } else if (UserChoice === "scissors" && computChoice === "scissors") {
        window.alert("It's a tie! You chose scissors and the computer chose scissors!");
    } else if (UserChoice === "scissors" && computChoice === "rock") {
        window.alert("You lose! You chose scissors and computer chose rock. Rock smashes scissors!");
    }
} else if (UserChoice === "rock") {
    if (UserChoice === "rock" && computChoice === "scissors") {
        window.alert("You chose rock and the computer chose scissors! You win! Rock smashes scissors."); 
    } else if (UserChoice === "rock" && computChoice === "rock") {
        window.alert("It's a tie! You chose rock and the computer chose rock!");
    } else if (UserChoice === "scissors" && computChoice === "rock") {
        window.alert("You lose! You chose rock and computer chose paper. Paper covers rock!");
} else {
    window.prompt("Invalid choice! Choose from rock, paper, or scissors");
}

【问题讨论】:

  • 在这段代码中,你忘记了最后一个 elseif 之后的括号
  • 如果您已经签入了外部 if/else 条件,则无需再次检查 UserChoice === "rock"
  • 这个问题的答案可能会给你一些优化的想法:stackoverflow.com/questions/22623331/…,也可以:jsfiddle.net/h3TcP/4

标签: javascript if-statement nested conditional


【解决方案1】:

您的问题不在于您的代码。这是一个简单的语法错误

您在末尾缺少 } 来关闭外部 if 语句。我更新了您的 sn-p 以使其在下面工作。

var UserChoice = window.prompt("Select rock, paper, or scissors");

var computChoice = Math.random();
if (computChoice <= 0.33) {
  computChoice = "scissors";
} else if (computChoice <= 0.66 && computChoice > 0.33) {
  computChoice = "paper";
} else {
  computChoice = "rock";
}

if (UserChoice === "paper") {
  if (UserChoice === "paper" && computChoice === "rock") {
    window.alert("You chose paper and the computer chose rock! You win! Paper covers rock");
  } else if (UserChoice === "paper" && computChoice === "paper") {
    window.alert("It's a tie!");
  } else if (UserChoice === "paper" && computChoice === "scissors") {
    window.alert("You lose! You chose paper and computer chose scissors. Scissors cut paper!");
  }
} else if (UserChoice === "scissors") {
  if (UserChoice === "scissors" && computChoice === "paper") {
    window.alert("You chose scissors and the computer chose paper! You win! Scissors cut paper.");
  } else if (UserChoice === "scissors" && computChoice === "scissors") {
    window.alert("It's a tie! You chose scissors and the computer chose scissors!");
  } else if (UserChoice === "scissors" && computChoice === "rock") {
    window.alert("You lose! You chose scissors and computer chose rock. Rock smashes scissors!");
  }
} else if (UserChoice === "rock") {
  if (UserChoice === "rock" && computChoice === "scissors") {
    window.alert("You chose rock and the computer chose scissors! You win! Rock smashes scissors.");
  } else if (UserChoice === "rock" && computChoice === "rock") {
    window.alert("It's a tie! You chose rock and the computer chose rock!");
  } else if (UserChoice === "scissors" && computChoice === "rock") {
    window.alert("You lose! You chose rock and computer chose paper. Paper covers rock!");
  } else {
    window.prompt("Invalid choice! Choose from rock, paper, or scissors");
  }
}

【讨论】:

    【解决方案2】:

    在您的情况下,您只需将} 添加到代码的末尾。

    但是还有其他方法可以创建rock, paper, scissors game

    var UserChoice = window.prompt("Select rock, paper, or scissors");
    
    var computChoice = Math.random();
    
    var computChoice = computChoice < 0.33 ? "scissors" : ( computChoice > 0.66 ? "rock" : "paper" ) ;
    
    var mess = { 
      rock : { scissors : 'You Win!, Rock smashes scissors!', paper : 'You lose!, Paper covers rock!'} ,
      paper : { rock : 'You Win!, Paper covers rock!', scissors : 'You lose!, Scissors cut paper!' },
      scissors : { paper : 'You Win!, Scissors cut paper!', rock : 'You lose!, Rock smashes scissors!' }
    }
    
    if ( computChoice === UserChoice)
      result = "It's a tie!" ; 
    	 
    else if ( UserChoice !== "rock" && UserChoice !== "paper" && UserChoice !== "scissors" )
      result = "Invalid choice! Choose from rock, paper, or scissors" ;
    
    else
      result = mess[UserChoice][computChoice] ;
    
    console.log( 'you chose ' + UserChoice + ' and computer chose ' + computChoice + ' ( ' + result + ' ) ') ;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多