我需要此程序继续询问cardChosen1
,直到用户回答' a'之间的某些内容。并且' h'。我知道我可以把
while (cardChosen1 == 'a' && cardChosen1 == 'b' && cardChosen1 == 'c' &&...
等。但我更希望有一种更简洁的方式。我想要的不仅是字母,还有符号和数字
我尝试过以下方法:
while (cardChosen1 > 'a' && cardChosen1 < 'h')
{
System.out.println ("Hey");
cardChosen1 = e.getKeyChar ();
}
但它没有用。
答案 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)