エラーはこの行を示しています
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)
if
条件のすべての部分についても同様です。
_&
_の優先順位は_==
_よりもより低いであるためです。
あなたのコードはa[0] & (1 == 0)
と同等であり、_a[0]
_がブール値でない限り、これはコンパイルされません...
必要がある:
_(a[0] & 1) == 0
_
などなど.
(はい、Javaはブール_&
_演算子を持ちます-ショートカットではない論理演算子です)
括弧を使用して、より正確にする必要があります。そうしないと、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)){