How to make loop infinite with "x <= y && x >= y && x != y"?

java

Solution

You need two variables which are comparable, have the same value, but represent different instances, for example:

Integer x = new Integer(0);
Integer y = new Integer(0);

`x <= y` and `y <= x` are both true because the `Integer` are unboxed, however the instance equality `x == y` is false.

Note that it works with `Float`, `Long` and `Double` too, and any value (not just 0) works.

You can also play with the intricacies of your JVM - they generally cache integer up to 127 only, so this would work too:

Integer x = 128;
Integer y = 128;

(but it would not with 127).

Or more simply, since `Double`s are generally not cached at all:

Double x = 0d;
Double y = 0d;

Problem

I had this interview question some years ago but I haven't found the answer yet. What should be x and y to make a infinite loop? ``` while (x <= y&& x >= y && x != y) { } ``` We tried with `Nan`,`infinity+/-`,`null` `float` vs `int`.

Original source

Related problems