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

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