contentEquals 如何将多个字符串与所有字符串匹配进行比较?

How can contentEquals compare multiple strings with all strings matching?

早上好, 以下 java 代码应将三个字符串与 requiredProgram 进行比较,并且仅在 requiredProgram 不等于 所有三个 字符串时才执行 if 循环和 do-while 循环。如果只有一个或两个字符串与 requiredProgram 不匹配,它就会执行 if 循环和 do-while 循环。我如何编写代码来执行我希望它执行的操作?

if (!requiredProgram.contentEquals(program1)||
    !requiredProgram.contentEquals(program2)||
    !requiredProgram.contentEquals(program3)) {
        System.out.println("Ohje, das tut mir leid. Hier muss ein Fehler unterlaufen sein! Bitte versuchen sie es erneut.");

    }
    } while(!requiredProgram.contentEquals(program1)||
            !requiredProgram.contentEquals(program2)||
            !requiredProgram.contentEquals(program3));

如果你的 3 programrequiredProgram 不同,你可以这样写:

  • 3 个程序应该不同:P1 不同ANDP2 不同 AND 不同 P3

    if(!requiredProgram.contentEquals(program1) &&
       !requiredProgram.contentEquals(program2) &&
       !requiredProgram.contentEquals(program3))
    
  • 不应等于以下 3 个中的任何一个:NOT等于 P1OR 等于P2 OR 等于P3)

    if(!(requiredProgram.contentEquals(program1) || 
         requiredProgram.contentEquals(program2) || 
         requiredProgram.contentEquals(program3)))
    

第一眼看到该逻辑表达式时,两者都有:

case1 or case2 or case3                     case1 || case2 || case3
not case1 and not case2 and not case3       !case1 && !case2 && !case3

这么看

!case1 || !case2 || !case3

99.9% 的人可能会说:错了。 至少有一项为真,因此表达式为真。

您可以将代码缩写为:

if (!Set.of(program1, program2, program3).contains(requiredProgram)) {

年长 java,效率较低且意义不大:

if (!Arrays.asList(program1, program2, program3).contains(requiredProgram)) {