2016-12-16 9 views
10

Czy istnieje bardziej zwięzły sposób pisaćJak sprawdzić, czy liczba całkowita ma zero lub zero w Javie?

if (myInteger != null && myInteger != 0) { ... } 

Dla examle, na smyczki można użyć StringUtils.isBlank()

+1

@ RafałLaskowski, który zależy od typu, tj. 'int' kontra' Integer' (ten drugi _ może być pusty). – Thomas

+2

@ RafałLaskowski On/ona oznaczał 'Integer' not' int' – Sweeper

+0

Czy' myInteger' typu 'int' lub' Integer'? Jeśli jest pierwszy, nie może mieć wartości "null". – skw

Odpowiedz

0

W zależności od wykonania myInteger (tj jeżeli nieruchomość Integer ciągu myInteger jest skrzynka typ Integer lub niezapakowany prymitywny int), możesz napisać tylko jeden warunkowy.

Integer s są rzeczywistymi obiektami, co oznacza, że ​​mogą być null. Mając to na uwadze, mogą one również zawierać 0 jako wartość. Tak więc w tym przypadku musiałbyś wykonać obie kontrole.

int jest prymitywny i nie może pomieścić wartości null. W takim przypadku wystarczy sprawdzić, czy własność int nie jest równa 0.

2

Chciałbym użyć warunku trójczłonowego. Coś jak:

public static boolean isNullorZero(Integer i){ 
    return 0 == (i == null ? 0 : i); 
} 

To nie jest czytelny, zgadzam;)

3

Z Java 8:

if (Optional.ofNullable(myInteger).orElse(0).intValue() != 0) { 
    ... 
} 

Zauważ, że Optional może pomóc, aby całkowicie uniknąć jeśli warunek w ogóle, w zależności na twoim przypadku użycia ...

+1

są naprawdę ogromne znaczenia "zwięzłe" ... –

+0

Tak, zgadzają się, że jest to dłużej niż "brzydkie zwykłe" rozwiązanie. Ale właśnie dlatego dodałem, że Opcjonalnie może pomóc w ogóle uniknąć takich kontroli ... –

+0

to nadal nie sprawdza, czy mojaInteger nie jest pusta i zakończy się niepowodzeniem z NullPointerException. Ponieważ obiekt docelowy jest liczbą całkowitą, musimy sprawdzić, czy nie jest on zerowy, a nie zerowy. – acveer

Powiązane problemy