Ответ 1
==
имеет более высокий приоритет, чем &
. Возможно, вы захотите объединить свои операции в ()
, чтобы указать свой собственный приоритет.
((a[0] & 1) == 0)
Аналогично для всех частей условия if
.
Ошибка показывает эту строку
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 делает hava логическим оператором &
- нестрочным логическим и)
Вы должны быть более точными, используя круглые скобки, иначе 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)){