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
.