2015-01-15 6 views
-8

Может ли кто-нибудь сказать мне, почему я получаю System.IndexOutOfRangeException с этого кода?System.IndexOutOfRangeException При попытке заполнить двумерный массив

char[,] matrix = new char[80, 18]; 
for (int i = 0; i < 80; i++) 
    for (int j = 0; i < 18; j++) 
     matrix[i, j] = '1'; 
+2

thats, что происходит, когда вы копируете и вставляете цикл for, не меняя все вары правильно. вы пропустили 'i' во втором цикле. должен был изменить его на 'j', а также – Banana

+5

Вот почему мы всегда говорим: _Используйте отладчик first_ –

+1

Также дублируйте: [Что такое исключение индекса вне диапазона и как его исправить?] (http : //stackoverflow.com/questions/24812679/what-is-an-index-out-of-range-exception-and-how-do-i-fix-it) –

ответ

11

Вы проверяете, если я меньше, чем 18 в секунду для цикла

char[,] matrix = new char[80, 18]; 
for (int i = 0; i < 80; i++) 
    for (int j = 0; i < 18; j++) //<-- Right there. 
     matrix[i, j] = '1'; 

Изменение к:

char[,] matrix = new char[80, 18]; 
for (int i = 0; i < 80; i++) 
    for (int j = 0; j < 18; j++) //<-- Right there. 
     matrix[i, j] = '1'; 
4

Проблема: в вашей второй цикл вы проверяете с переменными i вместо j

for (int i = 0; i < 80; i++) 
for (int j = 0; i < 18; j++) 
       ^^^ should be j 

Попробуйте:

for (int i = 0; i < 80; i++) 
for (int j = 0; j < 18; j++) 
3

... потому что у вас есть опечатка в для (Int J = 0; i < 18; j ++)

+0

OMG, что было неловко! Сожалею! – Disasterkid