0

尝试向我正在处理的程序添加输入验证时出现此错误:

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 条件的“捐赠”部分周围突出显示

4

2 回答 2

2

问题是您正在尝试使用or带有 aString和 a的操作数boolean

你想要的是这样的:

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!");
}
于 2015-06-03T00:56:44.500 回答
0

另一个注意事项是x.toLowerCase().equals(String str)可以重构为x.equalsIgnoreCase(String str). 他们做同样的事情,但第二个可能更具可读性和更经常使用。

于 2015-06-03T01:33:56.977 回答