Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2023, 10:59   #1
Sito Sill
Новичок
Джуниор
 
Регистрация: 25.02.2023
Сообщений: 1
По умолчанию Индекс за пределами диапазона в программе для чат бота

Здравствуйте форумчане. Мне нужно написать, что-то наподобие чат-бота. Заранее прошу ответить только на этот вопрос. Проблема заключается в том, что индекс, по которому выбирается слово в list, выходит за пределами диапазона, хотя элементы в list ещё остаются. Можете я чего-то не вижу, можете посмотреть и сказать в чём дело. Скрины и код, где находится ошибка прилагаются.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
class MenuMaker
{
public Random Randomizer;
string[] Meats ={ "Roast beef", "Salami", "Turkey", "Ham", "Pastrami"};
string[] Condiments ={ "yellow", "mayo", "relish", "french dressing" };
string[] Breads = { "rye", "white", "wheat", "pumpernickel", "italian bread", "a roll" };

List<string> Meat = new List<string>();
List<string> Condiment = new List<string>();
List<string> Bread = new List<string>();

int a = 0;
//переношу все элементы Meats в List Meat и тд.
public string GetMenuItem()
{
int i = 0;
if (a < Breads.Length)
{
if (a == 0)
{
for (int k = 0; k < Meats.Length;k++ )
{
Meat.Add(Meats[i]);
Condiment.Add(Meats[i]);
Bread.Add(Meats[i]);
i++;
}

}
a++;
}
else
{
Meat.Add("*");
}
int getIndex = Randomizer.Next(Meat.Count);
string randomMeat = Meat[getIndex];

//удаляю выбранный элемент из list
Meat.RemoveAt(getIndex);
return randomMeat + " whis ";//+ randomCondiment + " whis " + randomBread;

}
}
}
Изображения
Тип файла: png изображение_2023-02-25_115944407.png (59.7 Кб, 1 просмотров)
Sito Sill вне форума Ответить с цитированием
Старый 26.02.2023, 00:07   #2
0x0Dh
 
Регистрация: 10.02.2023
Сообщений: 6
По умолчанию

У вас там Meat.Count = 0. Я так понимаю, тут не весь листинг приложения. В любом случае, дёргается Randomizer.Next(0), который возвращает 0 и вы пытаетесь в списке Meat найти элемент с индексом 0, но его не существует, т.к. список пустой
0x0Dh вне форума Ответить с цитированием
Старый 26.02.2023, 00:10   #3
0x0Dh
 
Регистрация: 10.02.2023
Сообщений: 6
По умолчанию

Значения переменных посмотрел в вашем скрине, в левой нижней части, вкладка "видимые".
вообще попробуйте брекпойнт поставить и посмотреть, почему список оказался пустым.
0x0Dh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хеш-таблица, метод цепочек, первичный индекс и вторичный индекс - C# AnatoliyAnatoliy Помощь студентам 2 09.01.2018 15:30
Получить цвет за пределами формы? Alexandr17-10 Общие вопросы Delphi 4 30.11.2013 17:24
Как выбрать хостинг за пределами РФ Uniorchik Свободное общение 16 06.09.2013 10:15
Курсор за пределами рабочего стола HollyPaladin Win Api 11 31.12.2010 21:14
Индекс за пределами диапазона NZero Общие вопросы .NET 5 15.12.2010 09:55