1

我想制作一个 if 条件如下:

if(token[0].equals(("MOVE")|("NOT")|("AND"))
{

}

Orelse 还有其他方法可以做到这一点吗?

4

5 回答 5

3

抱歉,没有。

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#equals(java.lang.Object)

它一次只比较一个对象。

于 2013-04-02T02:25:37.537 回答
2

你可以把它写成一堆独立的语句,所有的 OR-red 一起:

if (token[0].equals("MOVE") || token[0].equals("NOT") || token[0].equals("AND")) {
     ...
}

或者,使用新的基于 Java 字符串的 switch 语句:

switch(token[0]) {
case "MOVE":
case "NOT":
case "AND":
    ...
    break;
default:
    ...
}

希望这可以帮助!

于 2013-04-02T02:26:05.863 回答
0

一套会做你想做的事。

    String[] commands={"MOVE", "NOT", "AND"};
    Set<String> cmds=new HashSet<String>(Arrays.asList(commands));
    if (cmds.contains(token[0])) {
        . . .
    }
于 2013-04-02T02:49:20.977 回答
0

较早的答案当然是正确的,但我会再抛出一个替代方案。

if (token[0].matches("MOVE|NOT|AND")) {
    ...
}

这有点效率低下,并且是对正则表达式的典型过度使用,但它简洁且在精神上与您所写的内容接近。

于 2013-04-02T02:33:07.067 回答
0

呵呵,没有。Java没有那么强大。你需要做三个比较:

if(token[0].equals("MOVE") || token[0].equals("NOT") || token[0].equals("AND"))
{

}
于 2013-04-02T02:26:04.857 回答