Java 错误的操作数类型错误

Java 错误的操作数类型错误,java,operands,Java,Operands,我在尝试将输入验证添加到我正在处理的程序时遇到此错误: bad operand types for binary operator '||' first type: boolean; second type: java.lang.String 这是我的密码: String x = scan.nextLine(); while (!x.toLowerCase().equals("buy a lamborghini")||("donate")||("do you know who i am")|

我在尝试将输入验证添加到我正在处理的程序时遇到此错误:

bad operand types for binary operator '||' first type: boolean; second type: java.lang.String
这是我的密码:

String x = scan.nextLine();

while (!x.toLowerCase().equals("buy a lamborghini")||("donate")||("do you know who i am")||("go sailing")||("drink fine wine")||("invest")||("gamble"))
{
    System.out.println("Please choose a valid option");
}

该错误在while条件的“捐赠”部分突出显示。问题是您试图将
操作数与
字符串和
布尔值一起使用

你想要的是这样的:

while (!(x.toLowerCase().equals("buy a lamborghini") || 
    x.toLowerCase().equals("donate") ||
    x.toLowerCase().equals("do you know who i am") ||
    x.toLowerCase().equals("go sailing") ||
    x.toLowerCase().equals("drink fine wine") ||
    x.toLowerCase().equals("invest") ||
    x.toLowerCase().equals("gamble")))
{
    //...
}
if (x.toLowerCase().equals("buy a lamborghini"))
{
}
else if (x.toLowerCase().equals("donate"))
{
}
else if (x.toLowerCase().equals("do you know who i am"))
{
}
else if (x.toLowerCase().equals("buy a lamborghini"))
{
}
else if (x.toLowerCase().equals("go sailing"))
{
}
else if (x.toLowerCase().equals("drink fine wine"))
{
}
else if (x.toLowerCase().equals("invest"))
{
}
else if (x.toLowerCase().equals("gamble"))
{
}
else
{
    System.out.println("Error! Invalid Input!");
}
我假设你在做某种冒险游戏——如果你想让它更干净,你执行动作的循环应该是这样的:

while (!(x.toLowerCase().equals("buy a lamborghini") || 
    x.toLowerCase().equals("donate") ||
    x.toLowerCase().equals("do you know who i am") ||
    x.toLowerCase().equals("go sailing") ||
    x.toLowerCase().equals("drink fine wine") ||
    x.toLowerCase().equals("invest") ||
    x.toLowerCase().equals("gamble")))
{
    //...
}
if (x.toLowerCase().equals("buy a lamborghini"))
{
}
else if (x.toLowerCase().equals("donate"))
{
}
else if (x.toLowerCase().equals("do you know who i am"))
{
}
else if (x.toLowerCase().equals("buy a lamborghini"))
{
}
else if (x.toLowerCase().equals("go sailing"))
{
}
else if (x.toLowerCase().equals("drink fine wine"))
{
}
else if (x.toLowerCase().equals("invest"))
{
}
else if (x.toLowerCase().equals("gamble"))
{
}
else
{
    System.out.println("Error! Invalid Input!");
}

另一个注意事项是,
x.toLowerCase().equals(String str)
可以重构为
x.equalsIgnoreCase(String str)
。它们做同样的事情,但第二种可能更容易阅读和使用