2016-11-17 105 views
1

所以我想在很短的方式来写:的Java不大于等于运算符为char类型

char letter; 
while (letter!='A' && letter!='B' && letter!= 'C... letter!= 'a' 
                && letter !='b' && letter!=c) 

基本上,如果用户没有输入A和C,一会儿之间的信循环将运行,直到输入A,B,C,a,b,c。

它应该在的

while(letter<'a' && letter > 'c')

的形式,但它并没有明显地工作,因为如果我输入的楼是不是“C”大,但小于“C”,因为char使用ACSII。

+0

可以告诉你你的代码? – Mritunjay

+0

简单 - 将输入的字母更改为小写或大写,然后检查。 –

回答

-2

您可以使用ASCII码检查字符,如'A'为65,'a'为97。所以你可以这样做,如果(字母> 65)检查是否大于'A'的字母。希望这可以帮助。 更新: 要检查信件是否只有A,B,C,a,b,c中的任意一个,请使用此检查:if(letter> = 65 & & letter < = 67) (字母> = 97 & &字母< = 99)。 如果有帮助请标记为答案。

+0

若要检查字母是否只有A,B,C,a,b,c中的任意一个,请使用此检查:if(letter> = 65 && letter <= 67)|| (letter> = 97 && letter <= 99) –

+0

我认为downvoters的反应是,'A'在问题域比65更容易理解。 –

1

集字母为小写,然后检查:

letter = Character.toLowerCase(letter); 
while (letter < 'a' && letter > 'c') { 
    // ...   
} 

这样一来,即使用户输入一个大写字母,检查将正常工作。

2

有很多方法来做这个检查。

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

或者您可以使用字母Character.toUpperCasetoLowerCase首先,去除的条件一半。

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

char letter; 
while ("ABCabc".indexOf(letter) == -1) 

当然也有更多的途径。

+0

第二种方式看起来更简洁 –

+0

更简洁,是。但我仍然更喜欢第一个版本。对我而言,那个意图更清晰。尤其是它的加括号方式和非操作符的使用使得它能够流畅地阅读我的意见。 – QBrute

0

需要两个条件,一个比特去摩根:

while(!((letter >= 'A' && letter <= 'C') || (letter >= 'a' && letter <= 'c'))) 
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"); 
    }