Перейти к содержимому

Как проверить пустой ли массив java

  • автор:

Пустые массивы в java, проверка на пустоту

В одном из заданий в курсе было написать программу, которая принимает массив целых чисел в аргументы метода и возвращает массив с наименьшим и наибольшим числом. Но также было условие, что если входной массив пустой, то возвращать должно два нуля. В примерах: getStatistic(<>) == <0, 0>. Вопрос такой: что использовать для проверки массива на эту «пустоту», чтобы при введении пустого массива при вызове метода возвращались нули? С числами всё супер, но когда массив пустой, то выдаёт ошибку ArrayIndexOutOfBoundsException, что вроде бы логично, ведь массив пустой, но я всё равно не понимаю, что можно добавить или изменить в этом коде, чтобы условие с пустыми массивами было выполнено. Хелпаните, пожалуйста. P.S. Насколько помню я, пустой массив — тот, где задано количество обьектов в нём, но не проинициализировано их, все обьекты равны нулю. Поправьте, если я путаю, пожалуйста.

public static int[] getStatistic(int[] results) < int max = results[0]; int min = results[0]; for (int i = 0; i < results.length; i++) < if (results[i] < min) < min = results[i]; >if (results[i] > max) < max = results[i]; >> int[] array = < min, max >; return array; > 

Отслеживать

7,797 13 13 золотых знаков 25 25 серебряных знаков 55 55 бронзовых знаков

Как проверить пустой ли массив?

Массивы в чистом Си не могут быть «пустыми», поскольку память под них выделяется в соответствии с размерностью таковых.

Илья, Вы сначала определитесь сами, что именно для вас будет «пустым» массивом.

Стандартные статические и динамические массивы, как написал выше poige не могут быть пустыми. Они всегда имеют размер >0. И да же если вы не инициализируете элементы массива, в них все равно будут какие-то значения (мусор).

Стандартный подход — если длина массива 0, значит массив пустой.

Вы можете, например, в программе считать, что значение 0 — это отсутствие элемента и в коде проверять это. Тогда проверка на «пустоту» массива своидтся просто к проверке всех значений на равенство 0. Если хоть один элемент не 0 — массив не пустой. Значение 0 я взял произвольно, вы можете брать любое другое, в зависимости от типа данных хранящегося в массиве. Или еще хуже — сделать массив структур, одно поле структуры отводите под признак — пустая структура или нет.

Решения вопроса 2
AnT @TheCalligrapher

В языке С в принципе не бывает «пустых» массивов. Разве что динамически выделенная под массив память может иметь размер 0 или flexible array member в структуре может соответствовать массиву размера 0.

Поэтому не ясно, о чем вы вообще ведете речь.

В любом случае, передавать в такую функцию правильный размер массива — ваша задача.

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Не ИТ-специалист

//. i = 0; tmp = 0; while (i < len) < if (tab[i] >tmp) tmp = tab[i]; i++; > //. 

(Массив пустой, если его длина len равна 0.)
Ответ написан более трёх лет назад
Pinkman @famousman204 Автор вопроса
нет, допустим я отправлю вот такой массив

int arr[10]; max(arr, 10);

то в таком случае я должен получить 0. Но не понимаю как это сделать.
Илья, это не пустой массив, а не инициализированный.

Илья, в Си невозможно отличить не инициализированную переменную от инициализированной (по крайней мере, типа int), — какой нибудь мусор в ней будет находится, — это не скриптовый язык, в котором как в JavaScript, есть особое значение особого типа undefined . Поэтому, если вам надо, явно инициализируйте массивы нулями.

Ответы на вопрос 0
Ваш ответ на вопрос

Войдите, чтобы написать ответ

android

  • Android
  • +3 ещё

Какие есть доки по сборке APK/AAB с использованием Android NDK?

  • 1 подписчик
  • 30 дек. 2023
  • 65 просмотров

Функции для работы с массивами Java

AnyLogic поддерживает ряд функций для работы с Java массивами (хранящими значения простейших типов: int[] , double[] , или элементы какого-то Java класса: Object[] ).

Функция Описание
boolean arrayContains(double[] array, double value) Возвращает true , если массив содержит заданное значение.

String[] s = new String[]; traceln(contains(s, "b"));
String[] s = new String[]; traceln(indexOf(s, "b"));
String[] s = new String[]< "a", "ab", "abc" >; traceln(indexOf(s, s -> s.length() > 1));

Как проверить массив из объектов на пустоту?

borisdenis

Работать с ArrayList просто: создайте нужный объект, вставьте объект методом add(), обращайтесь к нему методом get(), используйте индексирование так же, как для массивов, но без квадратных скобок. ArrayList также содержит метод size(), который возвращает текущее количество элементов в массиве (напомню, что в обычном массиве используется свойство length).

Один запрос в гугл и ответ готов, не ленитесь

Ответ написан более трёх лет назад

Нравится 1 2 комментария

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *