如何确保获得特定的 char 变量

How to make sure to get specific char variables

我需要这个程序继续询问 cardChosen1,直到用户给出介于 'a' 和 'h' 之间的答案。我知道我可以把

while (cardChosen1 == 'a' && cardChosen1 == 'b' && cardChosen1 == 'c' &&...

等但我更希望有一种更简洁的方式。我不仅要大写字母,还要符号和数字

我试过以下方法:

 while (cardChosen1 > 'a' && cardChosen1 < 'h')
                {
                    System.out.println ("Hey");
                    cardChosen1 = e.getKeyChar ();
                }

但是不行。

这个条件是普遍的false

while (cardChosen1 == 'a' && cardChosen1 == 'b' && cardChosen1 == 'c' &&...

这个条件可行,但我希望您创建一个 Set<Character> 并通过 contains()

查找它是否存在于 Set
 while (cardChosen1 > 'a' && cardChosen1 < 'h')

你快到了。问题是当你 do 得到一个介于 'a''h' 之间的答案时,你想循环 只要你不't得到这样的答案。只需加上一个否定运算符 (!),你应该没问题:

while (!(cardChosen1 > 'a' && cardChosen1 < 'h')) {

更好的是,您可以使用一些布尔代数来简化此语句:

while (cardChosen1 <= 'a' || cardChosen1 > 'h')) {

您应该检查 ASCII codes

例如,如果您想检查 ah 的范围,请尝试

(int)cardChosen1 > 97 || (int)cardChosen1 < 122

首先,您在上面输入的建议答案的正确形式必须是这样的:

while (cardChosen1 == 'a' || cardChosen1 == 'b' || cardChosen1 == 'c' || ... || cardChosen1 == 'h')

因为你需要一个字符是"a""b"or "c" ...但是你输入的字符是all 从 'a' 到 'h' 的字符,这是不可能的。

现在为您提供简洁的方法。你已经接近答案了,稍作改动就可以了。但是使用 Explicit Type Cast 更具可读性(在 Java 中)(当然它是可选的)。像这样:

while ((int) cardChosen1 >= (int) 'a' || (int) cardChosen1 <= (int) 'h')

如果是 'a' 或 'h' 本身,请注意接受答案时的 >=<= 符号。 最后,您必须按照我上面的解释将 && 转换为 ||