当前位置: 首页 > 知识库问答 >
问题:

将字符串与IF语句中的逻辑运算符进行比较

宇文俊明
2023-03-14

我试图找出如何比较if语句中的字符串。我的大部分代码都可以忽略,但都是针对上下文的。我试图在我的简单的石头、布、剪刀游戏中添加一条信息,当有人在石头、布或剪刀之外输入一根弦时。有人能告诉我我在有星号的部分做错了什么吗?

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" || "paper" || "scissors") {
    return "Your only options are rock, paper, or scissors you friggin plebian!";
}**
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 === "paper") {
        return "Scissors wins!";
    }
    else {
        return "Rock wins!";
    }
}

};

compare (userChoice, computerChoice);

共有3个答案

浦修文
2023-03-14

否则如果(choice1!=="石头"||"纸"||"剪刀")应该是:

否则如果(choice1!=="摇滚"||choice1!=="纸"||choice1!=="剪刀")

江阳冰
2023-03-14

尝试:

else if (choice1 !== "rock" || choice1 !== "paper" || choice1 !== "scissors")

你的陈述不符合“选择不等于石头、布或剪刀”

编译器将其读取为:

选择不等于摇滚

纸张

或者

剪刀

逻辑运算符后面的每个部分都必须求值为布尔值,因此只有当字符串不是rock时,它才与字符串匹配,后两个部分将不匹配任何内容。

秦斌
2023-03-14
// ...
else if (choice1 !== "rock" || choice1 !== "paper" || choice1 !== "scissors") {
    return "Your only options are rock, paper, or scissors you friggin plebian!";
}    
// ...

布尔表达式并不像我们在英语中所说的那样,即“选择不是石头、布或剪刀”。在某些语言中,将“choice”作为布尔值进行求值在语法上是完全有效的,因此请注意记住愚蠢地重复参数。否则,这些都是需要一段时间才能发现的错误类型。;)

 类似资料:
  • 问题内容: 当比较两个字符串时,我被告知不应使用逻辑运算符(==)。我们应该使用String.equals(String)进行比较。但是,我看到以下代码符合最新的JDK(1.6_23)并打印出来。我尝试四处搜寻,但找不到任何参考。从什么时候开始发生的? 问题答案: 您不应该使用它,因为它会做其他事情,然后您认为。 在这种情况下,“ hello”将被保存(在字符串插入中读取),因此与您的搅动相同的是

  • 我有以下python代码: 这里发生了什么?我无法理解这一点,因为不是布尔值。

  • 问题内容: handlebars JS中是否可以将逻辑运算符合并到标准handlebars.js条件运算符中?像这样: 我知道我可以编写自己的帮助程序,但是首先我想确保自己不会重新发明轮子。 问题答案: 这可以通过与帮手助手“作弊”来实现。这可能与开发把手的人的思想背道而驰。 然后,您可以像这样在模板中调用帮助程序

  • 问题内容: 我试图在z DBOpenHelper扩展SQLOpenHelper类中编写一个方法。它应该评估数据库中是否存在相同名称的条目。 这是Contact类的相关部分: 现在这是奇怪的事情: 方案A:其中和 等于false。Eclipse调试器显示名称的foo和cname的foo具有不同的id。这两个变量都按之前在代码中所示填充。 方案B:像这样加载变量的地方: 方案C:等于true …但是…

  • 问题内容: 我正在用Java制作轮盘赌(我自己的版本),而玩家可以打赌的类型之一就是选择将要滚动的颜色。(偶数是黑色,奇数是红色)。有没有一种方法可以使用switch语句将字符串与枚举进行比较? 这就是我想要得到的,但这并不是让我在switch语句中使用枚举“颜色”。 问题答案: 您必须具有要在其上进行切换的枚举类型的实例(其 成员 )。您正在尝试打开Enum类本身,这是没有意义的构造。所以你可能

  • 主要内容:逻辑运算的结果,优先级现在假设有这样一种情况,我们的软件比较特殊,要求使用者必须成年,并且成绩大于等于60,该怎么办呢? 或许你会想到使用嵌套的 if 语句,类似下面这样的代码: 这种方法虽然能够行得通,但不够简洁和专业,我们可以将其压缩为一条 if else 语句: 是一个新的运算符,称为 逻辑运算符,表示 和 两个条件必须同时成立才能执行 if 后面的代码,否则就执行 else 后面的代码。 在高中数学中,我们就学