Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con IF: Campos vacios y null

Estas en el tema de Problema con IF: Campos vacios y null en el foro de Java en Foros del Web. ¿Que tengo mal? Código: if ( ( this.getEan()!=null && !"".equals(this.getEan())) || (this.getISBN()!=null && !"".equals(this.getISBN()) ) && brand==true && this.getId() != null && this.getName(locale) != null ...
  #1 (permalink)  
Antiguo 27/03/2012, 03:15
Avatar de luna690  
Fecha de Ingreso: marzo-2012
Ubicación: Barcelona
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Problema con IF: Campos vacios y null

¿Que tengo mal?

Código:
if ( (
                this.getEan()!=null && !"".equals(this.getEan())) 
                || (this.getISBN()!=null && !"".equals(this.getISBN()) 
              ) 
                && brand==true 
                && this.getId() != null
                && this.getName(locale) != null
                && this.getProduct().getSummary().get(locale) != null
                && this.getCondition() != null
                && this.getConvenientCurrentPrice() != null
                && this.getConvenientFirstDocument() != null
                && this.getConvenientFirstDocument().getBinaryId() != null
                && this.getConvenientFirstDocument().getFilename() != null
                && this.rest(locale) != null
            ) { return true; }
        return false;
Necesito que los campos obligatorios: brand, id, nombre, descripcion del producto, condicion, precio, first-document no sean campos vacios.
Y, necesito que haya uno de los dos campos (ean/isbn) llenos.

Que tengo mal?
  #2 (permalink)  
Antiguo 27/03/2012, 03:48
 
Fecha de Ingreso: marzo-2012
Ubicación: Madrid
Mensajes: 74
Antigüedad: 12 años, 8 meses
Puntos: 12
Respuesta: Problema con IF: Campos vacios y null

En las condiciones de nombre, condicion, precio, etc... estas comprobando que no son nulos, aun podrian ser vacios. No se si eso es lo que quieres comprobar.

Ademas tendrias que añadir aislar las comprobaciones sobre ean e ISBN con un parenteis porque el operador && tiene mayor precedencia que el ||.
Tal como esta ahora, si Ean contiene algo, el resultado de todo el if es true independientemente del resto de campos porque la condicion a evaluar sera tipo "(True or ....)" y eso siempre da true

Código:
if ( 
     ((this.getEan()!=null && !"".equals(this.getEan())) 
     || 
     (this.getISBN()!=null && !"".equals(this.getISBN())))
                && brand==true 
                && this.getId() != null
                && this.getName(locale) != null
                && this.getProduct().getSummary().get(locale) != null
                && this.getCondition() != null
                && this.getConvenientCurrentPrice() != null
                && this.getConvenientFirstDocument() != null
                && this.getConvenientFirstDocument().getBinaryId() != null
                && this.getConvenientFirstDocument().getFilename() != null
                && this.rest(locale) != null
            ) { return true; }
        return false;
  #3 (permalink)  
Antiguo 27/03/2012, 03:55
Avatar de luna690  
Fecha de Ingreso: marzo-2012
Ubicación: Barcelona
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Problema con IF: Campos vacios y null

Muchas gracias Luis,
en el caso que cambiara todos los NULL por !"".equals(this.getId()) ¿estaría comprobando tanto si es NULL como si es campo vacío?

Última edición por luna690; 27/03/2012 a las 04:01
  #4 (permalink)  
Antiguo 27/03/2012, 06:12
 
Fecha de Ingreso: marzo-2012
Ubicación: Madrid
Mensajes: 74
Antigüedad: 12 años, 8 meses
Puntos: 12
Respuesta: Problema con IF: Campos vacios y null

Entiendo que me estas preguntando si condiciones tipo (!"".equals(cadena)) son true tanto si cadena no es nulo como si no es vacia.
No. Me temo que no. De hecho para (cadena==null) devolveria true, y para cadena con contenido tambien devolveria true.

Etiquetas: campos, null, vacios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:37.