检查键盘输入是否为空或不是" Y"或者不是" X"

时间:2018-05-16 09:49:14

标签: java input while-loop

我想查看我的输入是否为空?" Y"是否" X"

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

如果我输入" X"或" Y"它没有像它应该的那样退出循环。

3 个答案:

答案 0 :(得分:1)

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

你需要:

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

}

答案 1 :(得分:1)

我认为你所需要的就是这个:

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

编辑:

  

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

在这种情况下,只需将正则表达式更改为:

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

请注意,(?i)将匹配不区分大小写,因此请不要担心是,是,Y ..

答案 2 :(得分:0)

你混淆了你的逻辑。

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

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

如果你想要相反,只需否定整个表达式

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