Java 你能用“多重”吗;逻辑与;及;逻辑或;在if条件下?

Java 你能用“多重”吗;逻辑与;及;逻辑或;在if条件下?,java,Java,我试图使一个方法仅在unicode字符的字符值是数字、大写字母或小写字母时才执行操作 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"); } if((48=57)|

我试图使一个方法仅在unicode字符的字符值是数字、大写字母或小写字母时才执行操作

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");
}
if((48=57)| |(65=90)| | |(97=122)//仅当数字或字母
{
系统输出打印(“通过”);
}
(为了简化起见,我将操作更改为显示“通过”。) 这不起作用,因为我输入了一个?字符,它得到了一个“通行证”。 我似乎对如何使用这些运算符有错误的理解。
我怎么会错?我怎么才能实现我在这里要做的事情?

您在每个
&&
运算符的第二个操作数上使用了错误的比较运算符

应该是:

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");
}

如果((48将您的关系运算符反转。
=
您也可以简单地避免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");
}

if(('0')如果使用'0'和'9'等而不是48和57,会更清晰
if((""+msg[i]).matches("^[A-Za-z0-9]$"))
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");
}