¿Cuál es la forma más elegante de hacer el siguiente material:forma más elegante para cambiar de 0 a 1 y viceversa
int i = oneOrZero;
if (i == 0) {
i = 1;
} else {
i = 0;
}
Se puede suponer que i
sólo puede tener valor 1 o 0.
¿Cuál es la forma más elegante de hacer el siguiente material:forma más elegante para cambiar de 0 a 1 y viceversa
int i = oneOrZero;
if (i == 0) {
i = 1;
} else {
i = 0;
}
Se puede suponer que i
sólo puede tener valor 1 o 0.
i = (i == 0)?1:0
es una manera, aunque me gusta Las versiones de @Jimmy y @ Yuval son mejores.
Prefiero este, ya que cuando leo el código, sé exactamente lo que se supone que debe hacer. La resta es demasiado inteligente para eso, XOR no es común en una operación que voy a reconocer de inmediato. –
@Frank Schwieterman: En mi experiencia, el? el operador tampoco es tan común. Si nunca has visto el? operador, no es obvio lo que está sucediendo. Me gustaría ir con el XOR (y tal vez comentarlo). – GreenMatt
Hmm buen punto. Desde mi punto de vista voy a reconocer? antes ^, pero supongo que eso no es universal. –
Uso bits XOR
i ^= 1;
i = (i + 1) % 2
, aunque creo que todos estamos de acuerdo al método de sustracción o XOR es mejor! (Aunque tiene la ventaja añadida de "cambiar el interruptor" por más que el binario.)
int x = 0;
x=(int)Math.cos(x);
System.out.println("X value "+x);
¿Qué es esto que se está usando en los negocios de OrZero? Veo que haces que los programadores afirmen que solo tengo 1 o 0, pero eso no se aplica al compilador. ¿Por qué no usar un booleano o una enumeración? – Carl
@Carl: porque es un número entero – Roman
Permítanme aclarar: ¿Por qué está usando un int para (1) algo que solo tiene dos valores (que no se aplica por el tipo entero) y (2) algo que tiene su valor volteado? – Carl