Java: bool + int

Oct 18 2020

C'è un modo per far funzionare Java con l'aggiunta e la valutazione booleana / intera? Più specificamente, C ++ ha una funzionalità appropriata che accorcia molte istruzioni if.

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

È equivalente a

while (n--)
    cout << n;

Oppure, invece di:

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

Si può avere

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

C'è un modo per fare qualcosa di simile a quello in Java?

Risposte

3 ArvindKumarAvinash Oct 18 2020 at 17:02

È possibile utilizzare l'operatore ternario in Java per lo stesso effetto.

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

Produzione:

0
1
Polygnome Oct 18 2020 at 17:06

Il codice viene letto più spesso che scritto. Sebbene sia possibile utilizzare l'operatore ternario, la semantica di questo si riduce ad aumentarecountxy solo se è uguale . Quindi il modo più leggibile per scrivere questo sarebbe usare:

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

Fare trucchi come count += (x==y)in altre lingue è già una cattiva pratica poiché offusca la logica. Ottimizza per leggere, non per scrivere.