Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
 Аватар для Rastforator
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 16

Ошибка в цикле с массивами

21.11.2020, 23:01. Показов 1947. Ответов 6

Студворк — интернет-сервис помощи студентам
Ребят, привет! Недавно начал заниматься изучением языка программирования, в частности java. Пока не совсем понимаю синтаксис, да и опыта в целом никакого ( раньше ничем подобным не занимался).
Ближе к делу.
Ошибка связанная с длиной/размером массива выдает, что он равен нулю и индекс выходит за пределы, но разве при использовании библиотеки arrayList у нас изначальный размер массива не 10 (Capacity)??. Подскажите как быть, будет даже лучше если вы скинете не готовое решение, а теорию и на ее основе я сам попробую сделать (статьи конкретно по этой теме также приветствуются).

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.ArrayList;
 
 
 
public class Z1
{
 
    public static void main (String[] args)
    {
        ArrayList<Double> array = new ArrayList<>(10);
        for (int i = 0; i > array.size(); i++)
        {
            array.add(Math.random() * 100);
        }
        double n = array.get(1);
            for (int i = 0; i < 10; i++)
            {
                if (array.get(i) > n)
                {
                    n = array.get(i);
                }
 
            }
            System.out.println(array);
        System.out.println(n);
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.11.2020, 23:01
Ответы с готовыми решениями:

Ошибка в работе в цикле с динамическими массивами
Здравствуйте! После ввода 5 значения вылетает ошибка о невозможности чтения данных.Можете,пожалуйста,подсказать почему? #include...

Ошибка с массивами
Доброго времени суток. Пишу игру двадцать одно очко. Возникли проблемы с массивами. Есть класс, где хранятся: названия карт, значения карт,...

Ошибка с массивами в Windows XP
Написал программу. Если ее запускать в Windows 7 или Windows 98 SE то работает корректно, если же запустить в Windows XP то возникает...

6
 Аватар для Rastforator
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 16
21.11.2020, 23:12  [ТС]
В первом цикле
Цитата Сообщение от Rastforator Посмотреть сообщение
for (int i = 0; i < array.size(); i++)
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
21.11.2020, 23:16
Лучший ответ Сообщение было отмечено Rastforator как решение

Решение

capacity != size(). Емкость означает, что ArrayList резервирует место в памяти для хранения элементов. Т. е. имеем динамический массив:
Цитата Сообщение от Rastforator Посмотреть сообщение
ArrayList<Double> array = new ArrayList<>(10);
Добавляем 10 элементов:
Java
1
2
3
for (int i = 0; i < 10; i ++) {
    array.add(Math.random() * 100);
}
Чтобы добавить 11 элемент, динамическому массиву нужно увеличить свою емкость: вызвать метод ensureCapacity(size() + 1).
Этот метод увеличивает в 1.5 раза емкость массива при переполнении, т. е. наш динамический массив может хранить 15 элементов без переполнения - создает новый массив на 15 элементов, копирует элементы из старого массива в новый.

Добавлено через 2 минуты
Цитата Сообщение от Rastforator Посмотреть сообщение
В первом цикле
Цитата Сообщение от Rastforator Посмотреть сообщение
for (int i = 0; i < array.size(); i++)
Ваш цикл не вызовется ни разу.
1
 Аватар для Rastforator
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 16
21.11.2020, 23:23  [ТС]
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.ArrayList;
public class Z1
{
 
    public static void main (String[] args)
    {
        ArrayList<Double> array = new ArrayList<>(0);
        for (int i = 0; i < 15; i++)
        {
            array.add(Math.random() * 100);
        }
        double n = array.get(1);
            for (int i = 0; i < 15; i++)
            {
                System.out.println(array.get(i));
                if (array.get(i) > n)
                {
                    n = array.get(i);
                }
 
            }
 
        System.out.println("Наибольшее число " + n);
    }
}
Получается чтобы создавать цикл нужно указать хотя бы минимальное количество элементов массива?
Или я не так понял ) Программа работает по назначению.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
21.11.2020, 23:28
Цитата Сообщение от Rastforator Посмотреть сообщение
Получается чтобы создавать цикл нужно указать хотя бы минимальное количество элементов массива?
Ничего не понял, что вы хотите сказать.
0
 Аватар для Rastforator
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 16
21.11.2020, 23:41  [ТС]
Попробую еще раз, прошу прощения за свою глупость.
Ошибка моя в том, что я создаю только емкость (вместимость) массива, но никак не размер. Поэтому в цикле я обязан знать и указать кол-во элементов массива (его размер) например 10.
И из ваших, слов я понял, что если размер увеличивается емкость также растет, верно?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
21.11.2020, 23:49
Цитата Сообщение от Rastforator Посмотреть сообщение
если размер увеличивается емкость также растет, верно?
Перечитайте мой предыдущий пост.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.11.2020, 23:49
Помогаю со студенческими работами здесь

Ошибка со строковыми массивами
При запуске активити выдает вот эту ошибку: Error:Error: Duplicate resources:...

Ошибка в программе с массивами
Помогите,пожалуйста, исправить программу так,чтобы вместо всего массива мне выводило массив с заданным числом &quot;n&quot;. Например,у...

Задачи с массивами (Ошибка)
Ребят, учусь на первом курсе, экзамен по программированию..задача на массивы двумерном массиве 8х10 поменять местами левую верхнюю...

Ошибка, связанная с массивами
Вот такой код для такой задачи: записать в массиве М количество положительных элементов каждого столбца матрицы A(K,L). #include...

Ошибка с двумернными массивами.
программа для суммы двумерных массивов. var x:array of integer; c:array of integer; b:array of integer; begin For i:=1 to n...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru