2012-02-14 34 views
8
public boolean clearSelection() { 
    int i = 0; 
    if (!this.m_SelectedComps.isEmpty()) { 
     i = 1; 
     Iterator localIterator = this.m_SelectedComps.iterator(); 
     while (localIterator.hasNext()) 
      ((AnnotComponent) localIterator.next()).remove(); 
     this.m_SelectedComps.clear(); 
    } 

    return i; 
} 

Cómo convertir el número entero en booleano?No coinciden los tipos: no se puede convertir de entero a booleano

+3

Java no es como C++ En C++ 0 es falso y otros números enteros son verdaderas, en número entero Java no se puede utilizar como booleano.. – shift66

+0

¿Cuál es el propósito del número entero? No hay ninguna razón obvia para usar algo más que booleano para su ejemplo. @ shift66 Esa característica no es específica de C++. Es una regla general No puedo recordar otro idioma al lado de JAVA que no puede convertir int a bool. –

Respuesta

35

tratar de usar este retorno

return i == 1; 

o simplemente utilizar un valor lógico para comenzar (con un nombre mejor):

public boolean clearSelection() 
    { 
    boolean flag = false; 
    if (!this.m_SelectedComps.isEmpty()) 
    { 
     flag = true; 
     Iterator localIterator = this.m_SelectedComps.iterator(); 
     while (localIterator.hasNext()) 
     ((AnnotComponent)localIterator.next()).remove(); 
     this.m_SelectedComps.clear(); 
    } 
    return flag; 
    } 

Se continúa desconcertando por qué la gente usa i - un nombre de variable horrible. Parece 1 y no tiene ningún significado.

+10

Acerca de 'i':" Solo hay dos cosas difíciles en informática: invalidación de caché y nombrar cosas "- Phil Karlton –

+0

@ JanDvorak - Gracias por esa cita. Como corolario: el primer paso para nombrar bien las cosas no es usar 'i'. – Hogan

+1

@Hogan No estoy seguro de qué fuente está usando, seguro que no se ve como un '1' en mi IDE –

1

declaro como un valor lógico:

public boolean clearSelection() 
{ 
    boolean i = false; 
    if (!this.m_SelectedComps.isEmpty()) 
    { 
     i = true; 
     Iterator localIterator = this.m_SelectedComps.iterator(); 
     while (localIterator.hasNext()) 
      ((AnnotComponent)localIterator.next()).remove(); 
     this.m_SelectedComps.clear(); 
    } 
    return i; 
} 
0
public boolean clearSelection(){ 
    int i = 0; 
    if (!this.m_SelectedComps.isEmpty()) 
    { 
     i = 1; 
     Iterator localIterator = this.m_SelectedComps.iterator(); 
     while (localIterator.hasNext()) 
      ((AnnotComponent)localIterator.next()).remove(); 
     this.m_SelectedComps.clear(); 
    } 
    return (i!=0); 
} 
13

Puede ser que sólo puede modificar su estado de retorno sin grandes cambios al código de la siguiente manera:

return i > 0 ? true : false ; 
+0

Bien, pero qué pasa si el int es igual a 0! No funcionará incluso si usa> = porque cuando int es nulo, esta línea de código volverá a ser verdadera siempre. –

+8

El operador ternario es redundante. Es suficiente para escribir 'return i> 0;'. –

12

que conozco este hilo es viejo, pero quería añadir algo de código que me ayudó y podría ayudar a otros a buscar esto ...

Usted podría utilizar la API org.apache.commons.lang para convertir un int a booleano utilizando la clase BooleanUtils:

BooleanUtils.toBoolean(int value) 

"Convierte un int a boolean utilizando la convención de que cero es falso." (Javadocs)


Estas son las dependencias Maven & Gradle, sólo asegúrese de comprobar que está utilizando la versión más reciente en el enlace http://mvnrepository.com/artifact/org.apache.commons/commons-lang3

Maven Dependencia:

<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-lang3</artifactId> 
    <version>3.4</version> 
</dependency> 

Gradle Dependencia :

'org.apache.commons:commons-lang3:3.4' 
+0

Son cosas como esta las que le dan mala reputación a Java. ¿Por qué alguien usaría esto en lugar de simplemente 'value! = 0'? (Lo que da como resultado un booleano que usa la convención de que cero es falso) –

1

Convertir int a boolea n:

return i > 0; 
Cuestiones relacionadas