所以我试着写一下这个:
char letter;
while ( letter!='A' && letter!='B' && letter!= 'C... letter!= 'a'
&& letter !='b' && letter!=c)
基本上如果用户没有在A和C之间输入字母,while循环将一直运行,直到输入A,B,C,a,b,c。
它应该是
的形式 while(letter<'a' && letter > 'c')
但它显然不起作用,因为如果我输入F,它是否大于'C',但它小于'c',因为char使用ACSII。
答案 0 :(得分:3)
有很多方法可以进行此检查。
char letter;
while (!(letter >= 'A' && letter <= 'C') && !(letter >= 'a' && letter <= 'c'))
或者您可以先在信中使用Character.toUpperCase
或toLowerCase
,以删除一半的条件。
或者,如果字母范围很小或不连续,您可以这样做:
char letter;
while ("ABCabc".indexOf(letter) == -1)
当然还有更多方法。
答案 1 :(得分:1)
将字母设为小写,然后检查:
letter = Character.toLowerCase(letter);
while (letter < 'a' && letter > 'c') {
// ...
}
这样,即使用户输入大写字母,检查也会有效。
答案 2 :(得分:0)
你需要两个条件和一些de Morgan:
while(!((letter >= 'A' && letter <= 'C') || (letter >= 'a' && letter <= 'c')))
答案 3 :(得分:0)
或好的旧正则表达式
char input = 'B';
Pattern p = Pattern.compile("a|b|c", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("" + input);
if (m.find())
{
System.out.println("found");
}
答案 4 :(得分:-2)
您可以使用字符的ASCII码检查,例如65,A&#39; A&#39;和#39;&#39;。因此,您可以执行if(字母&gt; 65)来检查字母是否大于&#39; A&#39;。希望这可以帮助。 更新 : 要检查字母是否只是A,B,C,a,b,c中的任何一个,请使用此检查:if(letter&gt; = 65&amp;&amp; letter&lt; = 67)|| (字母&gt; = 97&amp;&amp;字母&lt; = 99)。 如果有帮助,请标记为答案。