Java初学者 - 希望有人可以帮我解决这个问题。我正在尝试编写一个简单的程序,根据用户输入的字符显示特定的消息。我遇到的问题是,在确定要打印哪条消息时,它无法识别大写字符的有效性。
代码编译好,但是如果我输入大写字母,它会打印出消息,告诉我它不是一个有效字符来启动标识符。
以下是源代码片段:
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数据类型固有的东西?
由于
答案 0 :(得分:5)
问题在于您的布尔分组和一对&&
应该是||
if (choice2 == '_' ||
((choice2 >= 'a' && choice2 <= 'z') ||
(choice2 >= 'A' && choice2 <= 'Z') ||
(choice2 > '0' && choice2 <= '9')))
如果true
或choice2 == '_'
介于choice2
和a
之间,z
和{{A
之间Z
,则评估为0
1}}包容性,或9
和{{1}}之间的包含。