2012-02-14 22 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; 
} 

Jak przekonwertować liczbę całkowitą na wartość logiczną?Niezgodność typu: nie można przekonwertować z liczby całkowitej na wartość logiczną

+3

Java nie jest jak C++ ++ 0 w C jest fałszywy i spełnione są inne liczby całkowite, w całkowitej Java nie mogą być stosowane jako zmienną.. – shift66

+0

Jaki jest cel liczby całkowitej? Nie ma żadnego oczywistego powodu, aby użyć na przykład czegoś innego niż boolean. @ shift66 Ta funkcja nie jest specyficzna dla C++. To ogólna zasada. Nie mogę zapisać innego języka obok JAVA, który nie może przekonwertować int na bool. –

Odpowiedz

35

Spróbuj użyć tego zwrotu

return i == 1; 

lub po prostu użyć logiczną, aby rozpocząć (o lepszej nazwy):

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

It nadal mnie mistyfikuje, dlaczego ludzie używają i - strasznej nazwy zmiennej. Wygląda jak 1 i nie przekazuje żadnego znaczenia.

+10

Dotyczące "i": "W informatyce są tylko dwie trudne rzeczy: unieważnianie pamięci podręcznej i nazywanie rzeczy" - Phil Karlton –

+0

@JanDvorak - Dziękuję za ten cytat. Jako następstwo: Pierwszym krokiem nazywania rzeczy dobrze nie jest użycie "i". – Hogan

+1

@Hogan Nie jestem pewien, której czcionki używasz, to na pewno nie wygląda jak "1" w moim IDE –

1

Oświadczam, że jako wartość logiczną:

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

Może być może po prostu zmodyfikować return bez większych zmian do kodu jak poniżej:

return i > 0 ? true : false ; 
+0

Miło, ale co, jeśli int równe jest 0! Nie zadziała, nawet jeśli użyjesz> =, ponieważ gdy int ma wartość null, ta linia kodu zawsze zwróci true. –

+8

Operator trójskładnikowy jest nadmiarowy. Wystarczy napisać 'return i> 0;'. –

12

Znam ten wątek jest stary, ale chciał dodać jakiś kod, który pomógł mi i może pomóc innym szukasz to ...

można użyć org.apache.commons.lang API do konwersji int do boolean użyciu klasy BooleanUtils:

BooleanUtils.toBoolean(int value) 

"Przekształca int na wartość logiczną, używając konwencji, że zero jest fałszywe." (Javadocs)


Oto Maven & Gradle zależności, tylko pamiętaj, aby sprawdzić, że używasz najnowszej wersji na link http://mvnrepository.com/artifact/org.apache.commons/commons-lang3

Maven Zależność:

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

Gradle Dependency :

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

To takie rzeczy, które nadają Jenie złe imię. Dlaczego ktokolwiek użyłby tego zamiast tylko 'value! = 0'? (Który powoduje, że wartość logiczna używa konwencji, że zero jest fałszywe) –

1

Konwersja int do boolea N:

return i > 0; 
Powiązane problemy