User terranum
terranum
28 уровень
Milan

Кухня(); Задание N9.

Статья из группы Архив info.javarush.ru
Кухня(); Задание N9. - 1 Правила [Одномерные массивы] 9. Дан массив действительных чисел, размерность которого N. Подсчитать, сколько в нем отрицательных, положительных и нулевых элементов.
Комментарии (5)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
RabenokDmitry Уровень 21, Саратов
5 февраля 2015
public static int[] NZPCounter(double[] array) {
        int[] result = new int[]{0, 0, 0};

        for (double value : array) {
            if (value < 0)
                result[0]++;
            else {
                if (value == 0)
                    result[1]++;
                else {
                    result[2]++;
                }

            }
        }
        System.out.println("Отрицательных элементов: " + result[0]);
        System.out.println("Равных нулю элементов: " + result[1]);
        System.out.println("Положительных элементов: " + result[2]);
        return result;
    }
ragesteel Уровень 19
8 октября 2014
Моя версия с использованием Java 8 Stream API. Сходу сделать многопоточной не получилось.
public class Kitchen9 {
    public static class ArrayStatistics implements IntConsumer {
        public int positives;
        public int zeroes;
        public int negatives;

        public ArrayStatistics() {
        }

        @Override
        public void accept(int value) {
            if (value > 0) {
                positives++;
            } else if (value < 0) {
                negatives++;
            } else {
                zeroes++;
            }
        }

        public void combine(ArrayStatistics other) {
            positives += other.positives;
            zeroes += other.zeroes;
            negatives += other.negatives;
        }
    }

    public static ArrayStatistics calculateArrayStatistics(int[] arr) {
        return Arrays.stream(arr).collect(ArrayStatistics::new, ArrayStatistics::accept, ArrayStatistics::combine);
    }
}
Sultan Уровень 16, Азербайджан
23 августа 2014
public static int[] method(double[] arr) {
    int[] res = new int[3];
    for (double n : arr) {
        res[n > 0 ? 0 : n < 0 ? 1 : 2]++;
    }
    return res;
}
Docktor91 Уровень 40, Калининград, Россия
23 августа 2014
public static class ResultData
    {
        int lenNegative=0;
        int lenPositive=0;
        int lenZeros=0;
    }

    public static ResultData getLength(double... values)
    {
        ResultData res=new ResultData();
        int N=values.length;
        for(int i = 0; i < N; i++)
        {
            if (values[i]==0)
               res.lenZeros++;
            else if(values[i]>0)
                res.lenPositive++;
            else
                res.lenNegative++;
        }

        return res;
    }