2014-04-07 93 views
0

Java初學者在這裏 - 希望有人能幫我解決這個問題。我正在嘗試編寫一個簡單的程序,根據用戶輸入的字符顯示特定的消息。我遇到的問題是,在確定要打印哪條消息時,它不會識別大寫字符的有效性。輸入時無法讓程序識別大寫字母?

代碼編譯OK,但如果我輸入大寫字母,則會打印出消息,告訴我它不是啓動標識符的有效字符。

這裏是源代碼片段:

choice2 = (char) System.in.read(); 

if(choice2 == 'q') 
    break; 

else 
    if(choice2 == '_' || choice2 >= 'a' && choice2 <= 'z' && choice2 >= 'A' && choice2 <= 'Z' && choice2 > '0' && choice2 <= '9') 
    System.out.println("That is a valid character to start an identifier."); 

else 
    if(choice2 == '$') 
    System.out.println("That is a valid character to start an identifier but should only be used by mechanically generated source code"); 

else 
    System.out.println("Sorry, that is not a valid character to start an identifier"); 
break; 

有什麼我做錯了或者是它固有的CHAR數據類型的東西嗎?

感謝

+1

你有所有'&&'所以它必須符合所有這些條件。所以當你輸入一個A時,它將是錯誤的,因爲它不能滿足所有&&語句 – 3kings

回答

5

問題是與你的布爾集團和一對夫婦&&應該||

if (choice2 == '_' || 
    ((choice2 >= 'a' && choice2 <= 'z') || 
    (choice2 >= 'A' && choice2 <= 'Z') || 
    (choice2 > '0' && choice2 <= '9'))) 

這將如果choice2 == '_'評估爲true或者如果choice2要麼之間az包容,A之間和Z(含),或者包含09(含)。

+0

感謝Mike B - 我更新了代碼,現在它可以工作。 – DanTheMan