【问题标题】:I can't understand how my If statements are being seen as true我无法理解我的 If 陈述是如何被视为真实的
【发布时间】:2019-09-25 22:20:16
【问题描述】:

我正在做一个 Rock, Paper, Scissors 游戏,并希望在提示方法中添加验证,这样如果用户键入的任何单词不是“rock”、“paper”或“scissor”,我们就会再次提示。

我似乎无法理解为什么下面的代码不起作用,即使我输入“rock”,它也会提示我再次输入。

for (i = 0; i < 5; i++) {
        let valid = false;
        let askPlayer = prompt("Rock, Paper or Scissor?");
        while(!valid) {
            if (askPlayer !== "rock" || askPlayer !== "paper" || askPlayer !== "scissor" || askPlayer !== "Rock" || askPlayer !== "Paper" || askPlayer !== "Scissor") {
                askPlayer = prompt("Enter again. You seem to have entered an invalid value");

            }
            else { valid = true; }
        }
        play(askPlayer, computerPlay());
    }

【问题讨论】:

    标签: javascript while-loop


    【解决方案1】:

    我认为您可能将肯定与否定混淆了。您的条件是说“如果玩家提供的值与其中任何一个匹配失败,请再次询问”

    一个更人性化的写法是:

    var valid_responses = ["rock","paper","scissors"];
    if (valid_responses.includes(askPlayer.toLowerCase())){
      valid = true;
    } else {
      askPlayer = prompt("Enter again. You seem to have entered an invalid value");
    }
    

    【讨论】:

      【解决方案2】:

      我猜你不想要这个条件

      askPlayer !== "rock" || askPlayer !== "paper" || askPlayer !== "scissor" || askPlayer !== "Rock" || askPlayer !== "Paper" || askPlayer !== "Scissor"
      

      但是这个

      askPlayer !== "rock" && askPlayer !== "paper" && askPlayer !== "scissor" && askPlayer !== "Rock" && askPlayer !== "Paper" && askPlayer !== "Scissor"
      

      只需将所有|| 更改为&amp;&amp;

      【讨论】:

        【解决方案3】:

        目前,您的代码说:'如果输入不是“摇滚”或者如果输入不是“剪刀”或者如果输入不是“纸”......等等'。

        所以如果你输入'rock',你会被拒绝,因为输入的不是'scissor'而不是'paper'。

        你应该说'如果输入不是“摇滚”并且如果输入不是“剪刀”并且如果输入不是“纸”......等等'。

        所以改变你所有的||到 && :)

        您也可以在检查其有效性之前尝试执行 askPlayer.toLowerCase(),这样您就不必重复使用“Rock”、“Paper”、“Scissor”。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-31
          • 2010-11-06
          • 2021-11-18
          相关资源
          最近更新 更多