代码之家  ›  专栏  ›  技术社区  ›  Steffen Bauer

检查键盘输入是否为空或不为“Y”或不为“X”

  •  3
  • Steffen Bauer  · 技术社区  · 8 年前

    我想检查输入是否为空,是否为“Y”或“X”

    while (weiterInput.isEmpty() || !weiterInput.equals("X") || !weiterInput.equals("Y")) {..}
    

    如果我输入“X”或“Y”,它不会像预期的那样退出循环。

    3 回复  |  直到 8 年前
        1
  •  1
  •   Eran    8 年前

    此循环将永远不会终止,因为 weiterInput 永远不会同时等于“X”和“Y”,所以 !weiterInput.equals("X") !weiterInput.equals("Y") 将始终通过 true

    您需要:

    while (weiterInput.isEmpty() ||
          (!weiterInput.equals("X") && !weiterInput.equals("Y"))) {            
    
    }
    
        2
  •  1
  •   Youcef LAIDANI    8 年前

    我想你所需要的只是:

    while (!weiterInput.matches("[XY]?")){...}
    

    编辑:

    我还可以用较少的编码测试小写和其他变体(是、是、是、y、y)

    在这种情况下,只需将regex更改为:

    if (!weiterInput.matches("(?i)(yes|y)?")){
    

    请注意 (?i) 将匹配不区分大小写的,所以不要担心YES,YES,Y。。

        3
  •  0
  •   khelwood Muhammed Elsayed.radwan    8 年前

    你把逻辑搞乱了。

    如果您想检查它是否为空或等于X或等于Y,那么

    (weiterInput.isEmpty() || weiterInput.equals("X") || weiterInput.equals("Y"))
    

    如果你想要 对面的 那就否定整个表达式

    (!(weiterInput.isEmpty() || weiterInput.equals("X") || weiterInput.equals("Y")))