Назначение многомерного массива не работает на C#

#c# #multidimensional-array

#c# #многомерный массив

Вопрос:

Я хотел бы проверить многомерный массив, если он содержит значение. Тогда я хотел бы заполнить их значением. Но по одной причине, потому что я еще не обнаружил, он не хочет заполнять значение. Я новичок. Не ожидайте слишком многого…

переключатель (меню выбора) -> случай 1

 string[,] kontodaten = new string[10, 4];
....
switch (menuChoose)
{
    case 1:
        bool eingabe = true;
        for (int i = 0; i <= 9; i  )
        {
            if (kontodaten[i, 0] == null || kontodaten[i, 1].Length == 0)
            {
                row = i;
                i = 9;
            }
        }
        while (eingabe == true)
        {
            try
            {
                Console.WriteLine("Bitte geben Sie ihren Vornamen ein: ");
                kontodaten[row, 0] = Console.ReadLine();
                Console.WriteLine("Bitte geben Sie ihren Nachnamen ein: ");
                kontodaten[row, 1] = Console.ReadLine();
                Console.WriteLine("Bitte geben Sie ihren PIN ein: ");
                kontodaten[row, 2] = Console.ReadLine();
                eingabe = false;
            }
            catch
            {
                Console.WriteLine("natFEHLER: Eingabe ungültig");
            }
        }
        break;
    case 10:
        for (int j = 0; j <= 9; j  )
        {
            Console.WriteLine("Vorname:{0};Nachname:{1};PIN:{2};Kontostand:{3} -- {4}", kontodaten[j, 0], kontodaten[j, 1], kontodaten[j, 2], kontodaten[j, 3], j);
        }
        break;
}
 

Комментарии:

1. Независимо от того, работает это или нет, решение не является оптимальным. Насколько я вижу, вы хотите иметь возможность хранить данные учетной записи до 10 человек. Что, если вы хотите сохранить 11 однажды? Удалить один в середине? … Также ваши 4 поля для каждой записи. Что, если вы также хотите сохранить адрес? Вам всегда нужно менять всю программу и иметь хороший шанс что-то сломать. Я бы предложил использовать список<AccountData> . Вы можете просто добавлять, удалять, сортировать … вещи. И ваш AccountData — это класс со всеми необходимыми вам свойствами. Даже если вы новичок. Не изучайте тупик.

2. @Klamsi вау, ты больше отвечаешь на этот вопрос, чем я. Однако я не могу читать язык, так что это, вероятно, не поможет 🙂

Ответ №1:

Это похоже на какое-то упражнение по программированию, поэтому я не буду вдаваться в проблемы наличия массива с ограниченным размером.

Является ли kontodaten переменной класса или локальной переменной в вашем методе? Если это локальная переменная, вы повторно инициализируете ее заново при каждом вызове функции. Итак, когда вы сталкиваетесь с «случаем 10», у вас есть совершенно новый и пустой массив.

Попробуйте поместить его вне вашей функции с помощью модификатора доступа, подобного этому: private string[,] kontodaten = new string[10, 4];