29

エラーはこの行を示しています

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

括弧の問題で、将来的には誰のためにも更新されました。

4

3 に答える 3

65

==より優先度が高い&()オペランドを演算子にバインドする方法を指定するために、操作をラップすることができます。

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

状態のすべての部分についても同様ですif

于 2014-04-15T21:39:36.733 に答える
3

&はよりも優先度が低いため==です。

あなたのコードは と同等a[0] & (1 == 0)であり、がブール値でない限りa[0]、これはコンパイルされません...

必要がある:

(a[0] & 1) == 0

などなど

(はい、Java にはブール&演算子があります。非ショートカットの論理 AND です)

于 2014-04-15T21:39:25.173 に答える
0

括弧を使用して、より正確にする必要があります。そうしないと、Java は使用したいオペランドの順序を使用しません。

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

なる

if (((a[0] & 1) == 0) && ((a[1] & 1) == 0) && ((a[2] & 1) == 0)){
于 2014-04-15T21:38:03.977 に答える