El error muestra esta línea

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

Este es el código:

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 corregido el código:

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

Era un problema con los soportes, actualizado para cualquier persona en el futuro.

InformationsquelleAutor user3364498 | 2014-04-15

3 Comentarios

  1. 47

    == tiene mayor prioridad que &. Usted puede ser que desee ajustar sus operaciones en () para especificar cómo desea que sus operandos para obligar a los operadores.

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

    De manera similar para todas las partes de la if condición.

  2. 3

    Porque & tiene un menor prioridad que ==.

    Su código es equivalente a a[0] & (1 == 0), y a menos que a[0] es un valor booleano que esto no va a compilar…

    Necesita:

    (a[0] & 1) == 0

    etc, etc.

    (sí, Java no hava un booleano & operador — no acceso directo y lógico)

    • ¿Qué significa a non shortcut logical and?
  3. 0

    Tiene para ser más precisos, el uso de paréntesis, de lo contrario, Java no va a utilizar el orden de los operandos que usted desea utilizar.

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

    Se convierte en

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

Dejar respuesta

Please enter your comment!
Please enter your name here