你能用多个"逻辑和"和"逻辑或"在if条件下?

时间:2016-06-16 07:55:41

标签: java

如果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;。 我似乎对如何使用这些运算符有不正确的理解。 我怎么了?我如何实现我在这里要做的事情?

3 个答案:

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