Хоть задачка, приведенная ниже, и не моя, я просто не мог удержаться и не внести ее в блог, чтобы друзья тоже получили повод посушить голову.
Вопрос, как нужно проинициализировать i, чтобы цикл был бесконечным:
[java]
// initialize i so that loop is infinite while (i == i + 1);
[/java]
Ответ опубликую в понедельник, если никто раньше не догадается :)
…
Вот и наступила новая неделя – задачку, конечно, решили.
Для первой задачи ответ такой:
[java]
double i = Double.POSITIVE_INFINITY; while (i == i + 1);
[/java]
Если объяснять ответ просто: то получится что-то вроде следующего. Каков результат выражения “бесконечность + 1″, естественно, все та же “бесконечность”.
В действительности, даже бесконечности не надо: достаточно просто большого числа. К примеру 1e24. Достаточное условие того, что цикл бесконечен – Math.ulp(i) > 1
Если объяснять подробно, то можно отправить читателей на статью в Wiki.
Что касается второй задачки – я нашел два решения: с автобоксингом и без. Оба привожу ниже:
[java]
double a = Double.NaN; double b = Double.NaN;
[/java]
[java]
double a = new Integer(1); double b = new Integer(1);
[/java]
Tweet
Решил :)
аналогичная задачка
// initialize i so that loop is infinite
while (a != b && !(a < b) && !(a > b))
Готово :-)
Andy,
Знаю как решить на java 1.5+. :-) Симпатишный паззл, спасибо, будет в коллекцию.
> while (a != b && !(a < b) && !(a > b))
Решил на java 1.4
i должно быть достаточно большим реальным числом.
Отностиельно задачки: while (a != b && !(a b))
Человеческие мысли уже давно вошли в этот цикл инициализировав переменные таким образом:
a = new Egg();
b = new Chicken();