如何处理二元运算符“&”java的坏操作数类型?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (195)

错误显示这一行

 if ((a[0] & 1 == 0) && (a[1] & 1== 0) && (a[2] & 1== 0)){

以下是整个代码:

public class Ex4 {

  public static void main(String[] args) {
  int [] a = new int [3];
  if(args.length == 3)
  {
      try{
        for(int i = 0; i < args.length; i++)
        {
        a[i] = Integer.parseInt(args[i]);
        }
        }
        catch(NumberFormatException e){
            System.out.println("Wrong Argument");
       }
      if ((a[0] & 1 == 0) && (a[1] & 1== 0) && (a[2] & 1== 0)){
        System.out.println("yes");
      }
    else {
        System.out.println("no");
    }
  }
  else{
      System.out.println("Error");
    }
}
}

修改代码后得到的结果:

if ((a[0] & 1) == 0 && (a[1] & 1) == 0 && (a[2] & 1) == 0){
提问于
用户回答回答于

==优先级高于&,可能希望将操作包装起来,()以指定希望操作数绑定到运算符的方式

((a[0] & 1) == 0)
用户回答回答于

由于&具有较小的比优先级==

你的代码相当于a[0] & (1 == 0),除非a[0]是布尔值,否则将无法编译...需要:

(a[0] & 1) == 0

扫码关注云+社区

领取腾讯云代金券