Добавление и сохранение новых данных в массиве
Я должен создать меню с модулями:
- Директор. Позволяет добавлять учителей, и удалять их.
- Информер. Выдает информацию об имеющихся в школе учителях.
Всё это в бесконечном цикле.
К коду: у меня есть изначальный массив учителей teachersForDirector, состоящий из 10 учителей. Если пользователь захочет добавить учителя или удалить его, то я использую методы DeletingTeachers, AddingTeachers. Проблема в том, что когда я выбираю модуль "информер", значения массива teachersForDirector сбрасывается к изначальному.
Как мне сделать так, чтобы измененные данные сохранялись и модуль информер выдавал корректную информацию?
Код:
public static List<string> DeletingTeachers(List<string> arrayTeachers)
{
int counter = 0;
Console.WriteLine("какого учителя хотели бы удалить? [индекс]");
for (int i = 0; i < arrayTeachers.Count; i++)
{
Console.WriteLine($"учитель под номером - {counter} {arrayTeachers[i]}");
counter++;
}
int index = int.Parse(Console.ReadLine());
arrayTeachers.RemoveAt(index);
Console.Clear();
for (int i = 0; i < arrayTeachers.Count; i++)
{
Console.WriteLine($"новый набор учителей - {arrayTeachers[i]}");
}
return arrayTeachers;
}
public static List<string> AddingTeachers(List<string> arrayTeachers)
{
Console.WriteLine("введи имя нового учителя");
arrayTeachers.Add(Console.ReadLine());
// Resize(ref teachers, 5);
for (int i = 0; i < arrayTeachers.Count; i++)
{
Console.WriteLine($"{arrayTeachers[i]}");
}
Console.Clear();
Console.WriteLine("данные об учителях:");
for (int i = 0; i < arrayTeachers.Count; i++)
{
Console.WriteLine($"{arrayTeachers[i]}");
}
return arrayTeachers;
}
static void Main(string[] args)
{
while (true)
{
List<string> teachersForDirector = new List<string> { "Матвеева Н.В", "Ивашина А.С", "Изюмов Р.Н.", "Жиделев А.С.", "Карпов М.Д", "Петрова О.А", "Таран Г.Г.", "Овчарова Д.Е.", "Андреев Д.Е.", "Долгих Н.О." };
Console.WriteLine("выберите кто вы:\nдиректор - 0 \nинформер - 1"); // MAIN MENU
int DirectorZeroInformerOne = int.Parse(Console.ReadLine());
Console.Clear();
if (DirectorZeroInformerOne == 0) // ИЗМЕНЕНИЕ УЧИТЕЛЕЙ
{
{
Console.WriteLine("вы хотите удалить учителя[1] или добавить нового[2]?");
int chooseDeleteOrNew = int.Parse(Console.ReadLine());
Console.Clear();
if (chooseDeleteOrNew == 1) // УДАЛЕНИЕ УЧИТЕЛЯ
{
DeletingTeachers(teachersForDirector);
}
if (chooseDeleteOrNew == 2) // ДОБАВЛЕНИЕ УЧИТЕЛЯ
{
AddingTeachers(teachersForDirector);
}
}
}
if (DirectorZeroInformerOne == 1)
{
Console.WriteLine("Информация об учителях");
for (int i = 0; i < teachersForDirector.Count; i++)
{
Console.WriteLine(teachersForDirector[i]);
}
}
}
}
Ответы (1 шт):
Автор решения: pasx
→ Ссылка
teachersForDirector переменная должна быть инициализирована только один раз вне цикла while:
List<string> teachersForDirector = new List<string> ...
while (true)
{