如果unicode字符的char值是数字,大写字母或小写字母,我试图让方法只采取行动。
if ((48<=msg[i]&&msg[i]>=57)||(65<=msg[i]&&msg[i]>=90)||(97<=msg[i]&&msg[i]>=122) // only if numeral or alphabet
{
System.out.print("PASS");
}
(我已将操作更改为显示&#34; PASS&#34;仅为了简化。) 这不起作用,因为我输入了?角色,它有一个&#34; PASS&#34;。 我似乎对如何使用这些运算符有不正确的理解。 我怎么了?我如何实现我在这里要做的事情?
答案 0 :(得分:5)
反转关系运算符。在第二个条件中>=
到<=
。
if ((48<=msg[i]&&msg[i]<=57)||(65<=msg[i]&&msg[i]<=90)||(97<=msg[i]&&msg[i]<=122)
如果(48<=msg[i]&&msg[i]>=57)
为msg[i]
48且>=
57,则{p> >=
将表示“通过”,即如果它只是>=
57。
或强>
如果您不想检查ASCII码,请尝试使用。
isLetterOrDigit()
课程的 Character
。
或强>
使用正则表达式。
if((""+msg[i]).matches("^[A-Za-z0-9]$"))
答案 1 :(得分:2)
您在每个&&
运算符的第二个操作数上使用了错误的比较运算符。
应该是:
if ((48<=msg[i]&&msg[i]<=57)||(65<=msg[i]&&msg[i]<=90)||(97<=msg[i]&&msg[i]<=122) // only if numeral or alphabet
{
System.out.print("PASS");
}
答案 2 :(得分:0)
您也可以简单地避免使用ASCII值,因为它更容易混淆。请尝试以下代码:
if (('0'<=msg[i]&&msg[i]<='9')||('A'<=msg[i]&&msg[i]<='Z')||('a'<=msg[i]&&msg[i]<='z') // only if numeral or alphabet
{
System.out.print("PASS");
}