JavaRush/Java блог/Архив info.javarush/Кухня(); Задание N3.
terranum
28 уровень

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

Статья из группы Архив info.javarush
участников
Кухня(); Задание N3. - 1 Правила [Одномерные массивы] Дана последовательность целых чисел a1, a2, ..., an. Выяснить, какое число встречается раньше – положительное или отрицательное.
Комментарии (10)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
timurnav
Уровень 21
7 октября 2015, 14:32
public static int method1(int[] array){
        for (int n : array){
            if (n > 0) return 1;
            if (n < 0) return -1;
        }
        return 0;
    }
RabenokDmitry
Уровень 21
4 февраля 2015, 23:42
public static boolean isPositiveFirst(int[] array) {
        for (int element : array) {
            if (element != 0) {
                return (element > 0);
            }
        }
        throw new IllegalArgumentException("All elements are zeros or array length is zero");

    }
Kashey
Уровень 11
13 сентября 2014, 17:45
Правильно я понял условие? Мы можем проверить только нулевой элемент, положительный он или отрицательный, тот раньше и встречается.
Kashey
Уровень 11
13 сентября 2014, 17:45
А нет, если первый ноль, надо смотреть следующий.
Docktor91
Уровень 40
19 августа 2014, 20:45
public boolean positiveFirst(int[] arr)
{
    for (int i:arr)
        if (i!=0)
            return i>0;
    throw new Exception("all values is 0");
}
terranum
Уровень 28
19 августа 2014, 21:06
Тело метода без лишнего знака, просто гениально. Как исключение я бы наверно кидал IllegalArgumentException, иначе надо добавлять throws Exception в сигнатуру, и как то все страшно выходит.
По условию мы принимаем последовательность a1, a2, ..., an, но вдруг нам таки скормят пустой массив типа int[] arr = new int[0];, надо как-то выкручиваться, «all values is 0» будет не совсем честно. В остальном операторов обнять пробелами, и просто сказка а не метод.
Docktor91
Уровень 40
19 августа 2014, 22:00
public final boolean positiveFirst(int[] arr)
{

    for (int i : arr)
        if (i != 0)
            return i > 0;

    throw new IllegalArgumentException("check your data");
}
Sultan
Уровень 16
19 августа 2014, 19:24

public static int method(int[] arr) {
    int count = 0;
    for (int n : arr) {
        count += n > 0 ? 1 : n < 0 ? -1 : 0;
    }
    return count > 0 ? 1 : count < 0 ? -1 : 0;
}
terranum
Уровень 28
19 августа 2014, 20:12
Условие задачи на много проще, необходимо выяснить какое число встречается раньше – положительное или отрицательное, а у тебя находит то которое встречается чаще.
Решение мне нравиться все очень аккуратно, в будущем, если мне не изменяет память, должно быть похожее задание, на частоту отрицательных и положительных чисел в последовательности.
Sultan
Уровень 16
19 августа 2014, 21:08
Да, я как раз прочитал «чаще» вместо «раньше».