dolfijn3000 Ответов: 1

C# необработанное исключение типа "system.indexoutofrangeexception" произошло в


поэтому я сделал 2d массив и хочу добавить в него данные но всегда получаю эту ошибку
An unhandled exception of type 'System.IndexOutOfRangeException' occurred in kwaterminal.exe


вот как я это сделал:

int[,] terain = new int[x1, y1];
int placedmas = 0;
          while (placedmas < LandMasa)
          {
              Random rnd = new Random();
              int x = 0;
              int y = 0;
              x = rnd.Next(0,x1);
              y = rnd.Next(0,y1);

              terain[x1,y1] = 1; //here i get the error
          }


Что я уже пробовал:

поиск ошибки в интернете, но я не мог найти кого-то, кто пытался сделать то же самое, что и я

1 Ответов

Рейтинг:
10

Thomas Daniels

В этой строке:

terain[x1,y1] = 1;
Ты наверное имел ввиду [x, y] (переменные, которые вы просто случайно сгенерировали). x1 и y1 это те размеры, которые вы указали ранее, поэтому "нижний правый" элемент этого массива будет находиться по адресу [x1 - 1, y1 - 1] что делает [x1, y1] вне диапазона.

[Редактировать]

Вам также придется увеличить placedmas в какой-то момент, или вы застрянете в бесконечной петле.


dolfijn3000

как мне это исправить? мне нужно случайное местоположение в моем массиве, чтобы изменить его на 1. я думаю, что это будет wotk, потому что я объявил x1 и y1 следующим образом : int x1 = 16; int y1 = 25; : и я думаю, что это не выйдет за пределы диапазона, потому что я выбираю случайное число от 0 до x1 и от 0 до y1.

Thomas Daniels

Я описал в своем ответе, как это исправить: "вы, вероятно, имели в виду [x, y]"

Итак, замените [x1,y1] на [x,y].

Thomas Daniels

Кроме того, вы, вероятно, должны увеличить placedmas в какой-то момент, или он всегда будет ниже LandMasa.

dolfijn3000

теперь я понимаю, почему он был так сломан. спасибо за помощь мне