2016-11-17 103 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"); 
    }