Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can a Java variable be different from itself? [duplicate]

I am wondering if this question can be solved in Java (I'm new to the language). This is the code:

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

I received the following question in my lab: How can you skip the first case (i.e. make the x == x condition false) without modifying the condition itself?

like image 458
Husam Avatar asked Oct 17 '13 01:10

Husam


2 Answers

One simple way is to use Float.NaN:

float x = Float.NaN;  // <--  if (x == x) {     System.out.println("Ok"); } else {     System.out.println("Not ok"); } 
 Not ok 

You can do the same with Double.NaN.


From JLS §15.21.1. Numerical Equality Operators == and !=:

Floating-point equality testing is performed in accordance with the rules of the IEEE 754 standard:

  • If either operand is NaN, then the result of == is false but the result of != is true.

    Indeed, the test x!=x is true if and only if the value of x is NaN.

...

like image 181
arshajii Avatar answered Sep 23 '22 23:09

arshajii


int x = 0; if (x == x) {     System.out.println("Not ok"); } else {     System.out.println("Ok"); } 
like image 29
Jeroen Vannevel Avatar answered Sep 20 '22 23:09

Jeroen Vannevel