switch operator bitwise java binary operand

operator - switch java



Tipos de operandos incorrectos para el operador binario “&” java (3)

El error muestra esta línea.

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

Este es el código completo:

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"); } } }

He arreglado el código:

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

Fue un problema con los corchetes, actualizado para cualquier persona en el futuro.


Debe ser más preciso, utilizando paréntesis, de lo contrario, Java no usará el orden de los operandos que desea que use.

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

Se convierte

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


Porque & tiene una prioridad menor que == .

Su código es equivalente a a[0] & (1 == 0) , y a menos que a[0] sea ​​un booleano, este no compilará ...

Necesitas:

(a[0] & 1) == 0

etcétera etcétera.

(sí, Java tiene un operador y un valor lógico - un método no abreviado lógico y)


== tiene mayor prioridad que & . Es posible que desee ajustar sus operaciones en () para especificar cómo desea que sus operandos se unan a los operadores.

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

Del mismo modo para todas las partes de la condición if .