Java 如何比较多个字符串?

Java 如何比较多个字符串?,java,Java,我想知道如何在一行中比较多个字符串。我试过使用| |,但它不适用于布尔或字符串。我的代码是这样的: }else if(question != "a" || "b") { System.out.println("Sorry that isn't an A or a B"); 对于那些标记为复制的人,我在这里检查了200多个关于堆栈溢出的问题,没有一个有效。@Chrylis发布的一条实际上没有帮助。他们只是询问==和.equals()之间的差异。您可以尝试使用: 首先,不要对字符串使用=。

我想知道如何在一行中比较多个字符串。我试过使用| |,但它不适用于布尔或字符串。我的代码是这样的:

}else if(question != "a" || "b") {
    System.out.println("Sorry that isn't an A or a B");
对于那些标记为复制的人,我在这里检查了200多个关于堆栈溢出的问题,没有一个有效。@Chrylis发布的一条实际上没有帮助。他们只是询问==和.equals()之间的差异。

您可以尝试使用:


首先,不要对字符串使用
=
。稍后您将了解原因。您希望按字符串的内容进行比较,而不是按它们在内存中的位置进行比较。在极少数情况下,
“a”
字符串可以将false与另一个名为
“a”
的字符串进行比较

其次,将其拆分,以便对比较结果执行布尔逻辑:

else if(!(question.equals("a") || question.equals("b")) {

另外,对于非
=

要回答您的问题,您必须在
| |

}else if( ! (question.equals("a") || question.equals("b"))  ) {

有两件事是错误的:您不能像这样用
|
(或
&&
)指定多个值。每次都需要明确指定左侧和右侧

其次,用于比较
字符串
值,而不是
=
(或在本例中为
!=
)运算符<代码>=比较两个对象引用以查看它们是否为同一对象

} else if (!("a".equals(question) || "b".equals(question)))
或者,另一种选择是使用和测试,对于较长的要测试的事物列表,这可能更清晰:

} else if (!Arrays.asList("a", "b").contains(question))
你不能不等于a或b
你必须做
而不是(等于a或等于b)


其次,您正在将字符串与
进行比较=
,但您应该使用。
equals(String)
方法比较字符串。这已经说了数百万次了,但是:
==
=
正在比较对象引用,而
.equals(String)
正在比较字符串值。

这不是有点过分吗?@hexafrance这似乎是问题的关键所在;适用于任意数量字符串的方法。正确的逻辑,但不是编写代码的好方法。(
ImmutableSet
会很好。)@chrylis不,我不同意:这几乎没有开销。比
ImmutableSet
或类似的东西少得多。
Arrays.asList()
是否被视为编译时常量?(
ImmutableSet
不过是固定大小数组的包装器。)大概OP正在询问一种方法,这种方法可以随着字符串数量的增加而扩展。@arshajii如果您希望这样做,请继续。我将保留我自己的假设和解释。hexafraction,我希望这会起作用,虽然它使我免于出错,但当我输入c时,它不会运行代码v.valso,我通常不使用==。我只是不知道除了!=我对Java相当陌生(虽然我已经编写了一段时间了,但我从未真正深入过(我仍然只有13岁)),我不确定你是否能做一个if(!(ques…“b”)){@hexafraction如果我要上传一张图片,你能想出来吗?我一点也不知道为什么它不能正确运行或创建自己的帮助函数:
boolean isOneOf(String s,String…a){for(String as:a)if(as.equals(s))返回true;返回false;}
} else if (!Arrays.asList("a", "b").contains(question))
}else if( !(question.equals("a") || question.equals("b")) {
    System.out.println("Sorry that isn't an A or a B");
String[] options = {"a", "b"}; // Must be sorted.
if (java.util.Arrays.binarySearch(options, question) < 0) {
  System.out.println("Sorry that isn't an A or a B");
}
if ("a|b".indexOf(question) == -1) {
  System.out.println("Sorry that isn't an A or a B");
}