【问题标题】:Bad operand types error错误的操作数类型错误
【发布时间】:2015-06-03 00:51:44
【问题描述】:

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

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

【问题讨论】:

    标签: java operands


    【解决方案1】:

    问题是您正在尝试将or 操作数与Stringboolean 一起使用

    你想要的是这样的:

    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!");
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-27
        • 2013-01-25
        • 1970-01-01
        • 2017-12-25
        • 2018-08-08
        • 1970-01-01
        相关资源
        最近更新 更多