Me pregunto si esta pregunta se puede resolver en Java (soy nuevo en el idioma). Este es el código:
class Condition {
// you can change in the main
public static void main(String[] args) {
int x = 0;
if (x == x) {
System.out.println("Ok");
} else {
System.out.println("Not ok");
}
}
}
Recibí la siguiente pregunta en mi laboratorio: ¿Cómo se puede omitir el primer caso (es decir, hacer que la x == xcondición sea falsa) sin modificar la condición en sí?
java
if-statement
Husam
fuente
fuente

System.out.println("Gotcha!");lugar del comentario? :).cross()y al otro.dot()y no hay confusión. Además, el hecho de que "anular el operador == y devolver siempre falso" no puede suceder parece pro javaRespuestas:
Una forma sencilla es utilizar
Float.NaN:Puedes hacer lo mismo con
Double.NaN.De JLS §15.21.1. Operadores de igualdad numérica
==y!=:fuente
fuente
elsecompleto. Técnicamente, esto no violaría los términos de la pregunta.Según las especificaciones del lenguaje Java
NaNno es igual aNaN.Por lo tanto, cualquier línea que cause
xser igual aNaNcausaría esto, comoDe las especificaciones del lenguaje Java:
fuente
No estoy seguro de si esta es una opción, pero cambiar
xde variable local a un campo permitiría que otro hilo cambie su valor entre la lectura del lado izquierdo y derecho en laifdeclaración.Aquí hay una breve demostración:
Salida:
fuente
La línea reemplazada podía leer.
Esto haría que se imprimiera el gotcha.
La especificación del lenguaje Java (JLS) dice:
fuente
Me las arreglé para obtener una
Gotcha!de esto:fuente
a != adebe a que fue cambiado por otro hilo. Sospecho que esto ganaría puntos en una entrevista.ael primer hilo entre el primer y el segundo acceso lo altere para compararifdeclaración clave podría escribirse en una sola línea horrible si es necesarioHay tantas soluciones:
fuente
super.printlndebería ser "No está bien", ¿verdad?Una solución sencilla es:
Pero no conozco todas las reglas de este acertijo ...
:) Sé que esto es una trampa, pero sin conocer todas las reglas, ¿es esta la solución más fácil a la pregunta :)
fuente
if (System.out.println("Gotcha") && false)Crea tu propia clase
Systemen el mismo paquete conCondition.En este caso, su
Systemclase ocultará lajava.lang.Systemclase.DEMO de Ideone
fuente
Usando el mismo enfoque de salida de salto / cambio de otras respuestas:
fuente