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

Posted

技术标签:

【中文标题】检查键盘输入是不是为空或不是“Y”或不是“X”【英文标题】:Check keyboard input if empty OR not "Y" OR not "X"检查键盘输入是否为空或不是“Y”或不是“X” 【发布时间】:2018-10-26 07:32:33 【问题描述】:

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

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

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

【问题讨论】:

&&,而不是||。你有错误的运营商。还有!isEmpty 如果输入 X 或 Y,其他否定条件仍然为真 【参考方案1】:

我想你只需要这个:

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

编辑:

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

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

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

注意(?i)会匹配大小写不敏感,所以不用担心YES,Yes,Y..

【讨论】:

很好,因为它是一个是或不是的问题,我也可以用更少的编码测试小写和其他变体(是、是、是、y、Y) @SteffenBauer 在这种情况下你可以使用if (!weiterInput.matches("(?i)(yes|y)?"))【参考方案2】:

你的逻辑搞错了。

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

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

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

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

【讨论】:

【参考方案3】:

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

你需要:

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


【讨论】:

以上是关于检查键盘输入是不是为空或不是“Y”或不是“X”的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL VBA 检查条目是不是为空或不是“空格”

检查数组是不是为空或存在

jQuery - 检查数组是不是为空或具有属性

spark中的isNullOrEmpty函数检查数据框中的列是不是为空或空字符串

检查所有三列是不是不为空或为空

检查 gRPC 流何时为空或不是流式传输数据