二元运算符 “&” java 的错误操作数类型

2022-09-01 11:26:21

错误显示此行

 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){

是括号的问题,将来会为任何人更新。


答案 1

==具有比 更高的优先级。您可能希望将操作包装在一起,以指定希望操作数如何绑定到运算符。&()

((a[0] & 1) == 0)

同样适用于条件的所有部分。if


答案 2

因为具有低于 的优先级。&==

你的代码等价于 ,除非是布尔值,否则它不会编译...a[0] & (1 == 0)a[0]

您需要:

(a[0] & 1) == 0

等等等等。

(是的,Java确实是一个布尔运算符 - 一个非快捷方式逻辑和)&


推荐