Ловлю исключение в задании по уроку "ОПЕРАЦИИ НАД МАССИВАМИ"

В домашнем задании, при выполнение всегда ловлю исключение на строке
byte[] array = new byte[length];
После ряда неудач в собственной версии, решил переписать эту часть, так же как в уроке. Но это не помогает.

Console.WriteLine("Введите размер массива");

        string userArraySiza = Console.ReadLine();
        byte length = Convert.ToByte(userArraySiza);

        byte[] array = new byte[length];
        byte index = 0;

        while (length <= array.Length)
        {
            
            array[index] = index;
            Console.WriteLine($"{array[index]}");
            index++;
            
        }

У Вас цикл бесконечный, так как переменная length всегда равна тому что ввел пользователь с клавиатуры и значение длины массива всегда постоянное. В большинстве случаев, когда вы создаете цикл, вы должны убедится что переменные, которые в нем используются изменяются и рано или поздно цикл прекратит работу.

Вам можно указать while (index < array.Length). Именно < а не <= так как если у вас размер массива 10 то последний элемент будет с индексом 9. Если обратиться по индексу 10 будет ошикаб (скорей всего OutOfRangeException та же что и сейчас у вас возникает)

Если есть ошибки, то лучше вставляйте их текст в вопрос, перед или после кода. Потому что может я не внимательно посмотрел ваш код и ошибка в другом месте.

Ну и для подобной задачи - пройтись по всем элементам массива, лучше всего подходит цикл for, цикл while лучше использовать тогда, когда вы не знаете сколько заранее будет итераций. В данном случае вы знаете что вам нужно сделать столько итераций, сколько элементов в массиве. А цикл while (пока, до тех пор пока) используют чаще для задач похожих на эту, читать данные из файла до тех пор пока в файле есть строки.

1 Вподобання