Все возможные значения int от самых маленьких до самых больших с использованием Java - PullRequest
7 голосов
/ 07 мая 2009

Напишите программу для печати всех возможных значений типа данных int от самых маленьких до самых больших с использованием Java.

Некоторые заметные решения по состоянию на 8 мая 2009 г., 10:44 GMT:

1) Дэниел Лью первым опубликовал правильно работающий код .

2) Крис предоставил простейшее решение для данной проблемы.

3) Том Хотин (tackline), возможно, придумал самое элегантное решение .

4) ммайерс отметил, что печать может стать узким местом, и можно улучшить за счет буферизации .

5) Подход Джая к грубой силе примечателен тем, что, помимо определения основной точки программирования, результирующий исходный код занимает около 128 ГБ и нарушает ограничения компилятора.

В качестве дополнительного примечания я считаю, что ответы действительно показывают, что это может быть хорошим вопросом для интервью, если акцент не делается на способности запоминать пустяки о переполнении типа данных и его последствиях (которые можно легко определить во время модульного тестирования), или способ получения пределов MAX и MIN (можно легко найти в документации), а точнее - анализ различных способов решения проблемы.

Ответы [ 14 ]

1 голос
/ 07 мая 2009

пакет fj от здесь .

import static fj.pre.Show.intShow;
import static fj.pre.Show.unlineShow;
import static fj.data.Stream.range;
import static java.lang.Integer.MIN_VALUE;
import static java.lang.Integer.MAX_VALUE;

public class ShowInts
  {public static void main(final String[] args)
     {unlineShow(intShow).println(range(MIN_VALUE, MAX_VALUE + 1L));}}
0 голосов
/ 10 августа 2018

Если интервьюер искал все возможные значения Integer в Java, вы можете попытаться дать ему решение, используя Long:

class AllIntegers{
    public static void main(String[] args) {
        for (int i = Integer.MIN_VALUE; i < Long.MAX_VALUE; i++) {
            System.out.println(i);
        }
        System.out.println(Long.MAX_VALUE);
    }
}

Это должно вывести диапазон от -9223372036854775808 до 9223372036854775807, что намного больше, чем вы бы достигли, используя Integer.

0 голосов
/ 07 мая 2009

Просто немного улучшив подход StringBuilder:

2 потока + 2 буфера (т. Е. StringBuilder): Основная идея состоит в том, что один поток заполняет один буфер, а другой поток выгружает содержимое другого буфера.

Очевидно, что поток "dumper" будет всегда работать медленнее, чем поток "filler".

0 голосов
/ 07 мая 2009

При 1000 линиях / сек. Вы закончите через 7 недель. Должны ли мы получить кофе сейчас?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...