0 / 0 / 0
Регистрация: 12.05.2019
Сообщений: 10
|
||||||
1 | ||||||
Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци12.05.2019, 12:07. Просмотров 12580. Ответов 8
Метки нет Все метки)
(
Здравствуйте, в Windows Forms (Visual studio 2017) выдаёт ошибку : "Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции", - помогите пожалуйста.
Ошибку выдаёт в этом моменте : buttons[x, y].Image = images[RandomImageIndex];
0
|
|
12.05.2019, 12:07 | |
Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать разме Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать разме |
|
30 / 28 / 9
Регистрация: 06.06.2014
Сообщений: 364
|
||||||
12.05.2019, 12:28 | 2 | |||||
0
|
Фрилансер
795 / 302 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
|
|
12.05.2019, 12:50 | 3 |
![]() Решение
Потому что у Вас цикл 3х3, а картинок в images всего 8. Вот на последней итерации и возникает исключение
Добавлено через 2 минуты Т.е. при загрузке картинок в список либо нужно цикл с 0 начинать, либо до i < 10
1
|
30 / 28 / 9
Регистрация: 06.06.2014
Сообщений: 364
|
|
12.05.2019, 13:48 | 4 |
asn31337, это тоже возможно, но мне кажется что картинок 9, но images.Count возвращает значение от 1 до 9, а индекс массива от 0 до 8
0
|
Фрилансер
795 / 302 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
|
|
12.05.2019, 14:02 | 5 |
Это не просто возможно, а так и есть!
Ну, если кажется, давайте посчитаем вместе... Цикл от 1 до i < 9... 1, 2, 3, 4, 5, 6, 7, 8... Сколько итераций получается? Вот тут как раз все правильно. Random.Next не затрагивает верхнюю границу. К примеру, Random.Next(0,9) никогда не вернет 9. Поэтому в рандоме и должно быть images.Count, а не images.Count - 1.
0
|
Модератор
|
||||||
12.05.2019, 14:04 | 6 | |||||
Нет.
asn31337 - прав. Картинки загружаются в цикле
Индексы же массивов buttons и images между собой ни как не связаны. Индексы первого перебираются в циклах, индексы второго берутся случайно.Но после выбора картинки, она из списка images удаляется. И когда циклы доходят до последней кнопки - список images уже пустой. И обращение к нему по индексу выдаёт ошибку.
1
|
30 / 28 / 9
Регистрация: 06.06.2014
Сообщений: 364
|
|
12.05.2019, 14:07 | 7 |
Ок, просто у меня была похожая ситуация где "-1" элемент исправил эту ошибку
0
|
Фрилансер
795 / 302 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
|
|
12.05.2019, 14:15 | 8 |
Все верно. Если Вы обращаетесь к последнему элементу массива, то нужно указывать
images.Count - 1 . Но в случае с рандомом ситуация немного иная. Т.к., как я говорил, верхняя граница не учитывается
0
|
Тематические курсы и обучение профессиям онлайн Профессия С#-разработчик (Skillbox) Архитектор ПО (Skillbox) Профессия Тестировщик (Skillbox) |
Модератор
|
|
12.05.2019, 14:28 | 9 |
Random сам делает "-1".
Допустим, Random.Next(0,9) возвращает одно из чисел от 0 до 8 включительно. Число 9 не входит в диапазон возвращаемых.
0
|
12.05.2019, 14:28 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци
Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать разме Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |