Java: bool + int

Oct 18 2020

Existe uma maneira de fazer o Java funcionar com adição e avaliação booleana / inteira? Mais especificamente, C ++ tem um recurso apropriado que encurta muitas instruções if.

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

É equivalente a

while (n--)
    cout << n;

Ou, em vez de:

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

Pode-se ter

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

Existe uma maneira de fazer algo semelhante em Java?

Respostas

3 ArvindKumarAvinash Oct 18 2020 at 17:02

Você pode usar o operador ternário em Java para o mesmo efeito.

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

Resultado:

0
1
Polygnome Oct 18 2020 at 17:06

O código é mais frequentemente lido do que escrito. Embora você possa usar o operador ternário, a semântica disso se resume a aumentarcountxy apenas se for igual . Portanto, a maneira mais legível de escrever isso seria usar:

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

Fazer truques como count += (x==y)em outras linguagens é uma prática ruim, pois ofusca a lógica. Otimize para ler, não para escrever.