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

时间:2015-01-06 06:02:37

标签: java while-loop char

我需要此程序继续询问cardChosen1,直到用户回答' a'之间的某些内容。并且' h'。我知道我可以把

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

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

我尝试过以下方法:

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

但它没有用。

4 个答案:

答案 0 :(得分:4)

你快到了。问题是,当你'a''h'之间得到答案时,你会循环播放,只要你不 >得到这样的答案。只是打一个否定运算符(!),你应该没问题:

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

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

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

答案 1 :(得分:1)

这种情况普遍存在false

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

此条件可行但我希望您创建一个Set<Character>并查看Set contains()中是否存在 while (cardChosen1 > 'a' && cardChosen1 < 'h')

{{1}}

答案 2 :(得分:1)

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

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

因为您需要一个字符为“a” “b” “c”。 ..但你输入的内容要求角色 所有 的字符从'a'到'h'是不可能的。

现在以简洁的方式。您接近答案,并通过一些小的改动,它将起作用。但是使用 Explicit Type Cast (当然它是可选的)更具可读性(使用Java)。像这样:

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

如果您接受答案,如果它是“a”或“h”本身,请注意>=<=个符号。 最后,您必须按照我上面的说明将&&转换为||

答案 3 :(得分:0)

您应该检查ASCII codes

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

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