Java: bool + int

Oct 18 2020

¿Hay alguna manera de hacer que Java funcione con la suma y evaluación de números enteros / booleanos? Más específicamente, C ++ tiene una característica apropiada que acorta muchas declaraciones if.

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

Es equivalente a

while (n--)
    cout << n;

O, en lugar de:

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

Uno puede tener

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

¿Hay alguna forma de hacer algo similar a eso en Java?

Respuestas

3 ArvindKumarAvinash Oct 18 2020 at 17:02

Puede usar el operador ternario en Java para el mismo efecto.

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

Salida:

0
1
Polygnome Oct 18 2020 at 17:06

El código se lee con más frecuencia que se escribe. Si bien puede usar el operador ternario, la semántica de esto se reduce a solo aumentar countsi xes igualy . Entonces, la forma más legible de escribir esto sería usar:

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

Hacer trucos como count += (x==y)en otros idiomas en mi humilde opinión ya es una mala práctica, ya que ofusca la lógica. Optimice para leer, no escribir.