一次测试多个.equals()

tus*_*747 1 java equals

我想知道是否有办法缩短这个带有".equals"的if语句,以便我可以在一行中测试,而不是多个if语句.

这是我目前冗长的代码的摘录.(这是我想缩短的)

if (queryArray[1].equals("+")) { 
     System.out.println("Got +");
 } else if (queryArray[1].equals("-")) {
     System.out.println("Got -");
 } else if (queryArray[1].equals("*")) {
     System.out.println("Got *");
 }
Run Code Online (Sandbox Code Playgroud)

我尝试这样做(不起作用)来减少所需的行数.

if (queryArray[1].equals("+","-","*")) { 
             System.out.println("Got +");
         }
Run Code Online (Sandbox Code Playgroud)

甚至(不起作用):

if (queryArray[1].equals("+" || "-" || "*")) { 
         System.out.println("Got +");
     }
Run Code Online (Sandbox Code Playgroud)

另外,我知道||内部的"或"语法if statements,但是我希望在" .equals()"方法中缩短它.

有没有办法缩短这段代码?谢谢.

Bor*_*lid 5

因为你只是做单字符的比较,你可以做一个switchqueryArray[1].charAt(0).

switch (queryArray[1].charAt(0)) {
    case '+':
      // plus thing
      break;
    case '-':
      // minus thing
      break
    // ... and so on
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是Java 7,则可以直接切换字符串.