【问题标题】:Is there a reason this won't work? I have the || operators right, can you compare user inputted strings using the ||?有没有理由这不起作用?我有 ||操作员对,你能用 || 比较用户输入的字符串吗?
【发布时间】:2021-12-07 15:57:39
【问题描述】:

它说“错误:二元运算符'||'的操作数类型错误”

if(a.equals("skels" || "iceS" || "fireS" || "elecS" || "healS")) {
    card1 = 1;
} 

【问题讨论】:

  • a的值是多少?
  • a.equals("skels") || a.equals("iceS") || .... - 您需要在 equals 方法返回的布尔值上使用 || 运算符,而不是在传递给该方法的字符串上
  • 字符串不是布尔值,因此您无法将它们与|| 进行比较。
  • 请参阅here 了解有关如何正确执行此操作的一些想法。

标签: java java.util.scanner


【解决方案1】:

如果有意义的话,一个值不能是两个值。

equals 接受一个值,运算符|| 是一个逻辑或接受两个布尔值。

您在错误的上下文中使用它。

阐述

String a = "Hello"; //does mean, that a has now the value "Hello"

可以作为参数使用,例如在equals-Method中:

boolean result1 = a.equals("Hello"); //or
boolean result2 = "Hello".equals(a);

equals 的这两种用法都接受一个字符串并返回一个布尔值。

你也可以写类似

boolean b = "Hello".equals("World") || "Hello".equals(a);

这会将b 的值设置为true,而不是false or true

为什么?

  • "Hello".equals("World") 是假的
  • "Hello".equals(a) 是真的
  • false || true 是真的

|| 运算符(就像 &&^)在布尔上下文中工作,其中只能比较布尔值。

像这样写: String a = "Hello" || "World"; 没有意义,因为“Hello”或“World”都不是真假。它们是字符串。

考虑到这一点,您可以在布尔表达式中比较和使用多个等号语句;因为它们返回布尔值,这些运算符可以使用。

【讨论】:

    【解决方案2】:

    您需要多次调用equals 方法并将|| 移出equals 调用,如下所示:

    if(a.equals("skels") || a.equals("iceS") || a.equals("fireS") || a.equals("elecS") || a.equals("healS")) {
        card1 = 1;
    }
    

    【讨论】:

    • 只是评论:为了null 的安全,最好将文字字符串与变量进行比较。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 2011-09-20
    • 2014-04-03
    • 2012-01-22
    • 2017-12-07
    • 1970-01-01
    相关资源
    最近更新 更多