Java: bool + int

Oct 18 2020

Czy istnieje sposób, aby Java działała z dodawaniem i oceną wartości logicznych / całkowitych? Mówiąc dokładniej, C ++ ma odpowiednią funkcję, która skraca wiele instrukcji if.

for (int i = 0; i < n; ++i)
    cout << i;

Jest równa

while (n--)
    cout << n;

Lub zamiast:

for (int i = 0; i < n; ++i)
    if (x == y)
        count++;

Można mieć

for (int i = 0; i < n; ++i)
    count += (x==y);

Czy istnieje sposób na zrobienie czegoś podobnego do tego w Javie?

Odpowiedzi

3 ArvindKumarAvinash Oct 18 2020 at 17:02

Możesz użyć operatora trójargumentowego w Javie dla tego samego efektu.

public class Main {
    public static void main(String[] args) {
        int x = 5, y = 10, count = 0;
        count += x == y ? 1 : 0;
        System.out.println(count);

        x = 10;
        count += x == y ? 1 : 0;
        System.out.println(count);
    }
}

Wynik:

0
1
Polygnome Oct 18 2020 at 17:06

Kod jest częściej czytany niż pisany. Chociaż możesz użyć operatora trójskładnikowego, semantyka tego sprowadza się do zwiększaniacountxy tylko wtedy, gdy jest równe . Więc najbardziej czytelnym sposobem napisania tego byłoby użycie:

for (int i = 0; i < n; ++i)
   if (x == y) count++;

Robienie sztuczek, jak count += (x==y)w innych językach, jest już złą praktyką, ponieważ zaciemnia logikę. Optymalizuj pod kątem czytania, a nie pisania.