Java不大于或等于Char类型的运算符

时间:2016-11-17 04:43:18

标签: java while-loop char operators ascii

所以我试着写一下这个:

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。

5 个答案:

答案 0 :(得分:3)

有很多方法可以进行此检查。

char letter;
while (!(letter >= 'A' && letter <= 'C') && !(letter >= 'a' && letter <= 'c'))

或者您可以先在信中使用Character.toUpperCasetoLowerCase,以删除一半的条件。

或者,如果字母范围很小或不连续,您可以这样做:

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)。 如果有帮助,请标记为答案。