2014-04-07 34 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