Исключение индексирования OutOfRangeException

#c# #arrays #loops

#c# #массивы #циклы

Вопрос:

Я пытаюсь поместить целое число внутрь массива путем вычитания инициализированного значения в каждом цикле. Этот код кажется мне правильным, но компилятор всегда утверждает, что «Индекс находился за пределами массива».. Я делаю здесь что-то не так, особенно в части itr?

   static void Main()
  {
      int itr = 0;
      int[] arr = {};

      for(int i = 2305; i > 0; i-=576)
      {
            arr[itr] = i;
            itr =1;
      }

      Console.ReadLine();
  }
  

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

1. Как вы думаете, каков размер / длина вашего массива arr ? (Подсказка: проверьте значение arr.Length )

2. размер массива равен 4, но внутри цикла он равен 5? Я пытался вычитать индекс на 1 в каждом цикле, но все равно это не работает

3. «размер массива равен 4» откуда вы это знаете? (Подсказка: согласно коду в вашем вопросе, это не …)

Ответ №1:

Эта строка создает пустой массив (поэтому Length равно 0):

 int[] arr = {};
  

Вы должны указать размер для вашего массива.В вашем случае размер может быть:

 int[] arr = new int[2305 / 576   1];
  

Ответ №2:

Ваш массив int ‘arr’ имеет длину 0; Поскольку вы не задаете размер или значения для него, массив вообще не имеет значения.

это итерация, которая будет работать;

 int[] arr = new int[ 1000 ];
int itr = 2305;

for ( int i = arr.Length-1; i > -1; i-- ) {
    itr -= 576;
    arr[ i ] = itr;
}