не понимаю ошибку c#
только учу c# и возникла проблема. Написал код заполнение двухмерного массива как в видео и все работало, вот код из видео:
Console.WriteLine("введите количество элементов по y ");
int y1 = int.Parse(Console.ReadLine());
Console.WriteLine("введите количество элементов по x ");
int x1 = int.Parse(Console.ReadLine());
int[,] ddd = new int [y1, x1];
for (int y = 0; y < ddd.GetLength(0); y++)
{
for (int x = 0; x < ddd.GetLength(1); x++)
{
Console.WriteLine($"введите значение индекса {x} массива под номером {y}");
ddd[y, x] = Convert.ToInt32(Console.ReadLine());
}
В коде видно, что для указание элементов массива, были созданы переменные в циклах for (y,x) но для большего понимания кода я решил указать переменные вне цикла, тот же самый код но только с объявлением переменных вне циклов:
Console.WriteLine("введите количество элементов по y ");
int y1 = int.Parse(Console.ReadLine());
Console.WriteLine("введите количество элементов по x ");
int x1 = int.Parse(Console.ReadLine());
int[,] ddd = new int[y1, x1];
int y = 0;
int x = 0;
for (; y < ddd.GetLength(0); y++)
{
for (; x < ddd.GetLength(1); x++)
{
Console.WriteLine($"введите значение индекса {x} массива под номером {y}");
ddd[y, x] = Convert.ToInt32(Console.ReadLine());
}
Console.ReadLine();
}
но этот код уже не работал, я мог заполнить только один массив и при вводе некоторого количества элементов выдавало ошибки. Буду рад если объясните в чем дело
Ответы (2 шт):
В первом случае при каждой итерации внешнего цикла по Y, у вас заново запускался цикл по Х и переменной Х присваивалось значение 0. Во втором случае, у вас запускается цикл по Х, но переменная Х уже имеет значение из предыдущей итерации цикла по Y.
Просто сбрасывайте значение Х в 0 после цикла по Х.
for (int y = 0; y < ddd.GetLength(0); y++)
{
for (int x = 0; x < ddd.GetLength(1); x++)
{
В этом коде x обнуляется каждую итерацию цикла по y.
int y = 0;
int x = 0;
for (; y < ddd.GetLength(0); y++)
{
for (; x < ddd.GetLength(1); x++)
{
А в этом коде x обнуляется только один раз - перед началом обоих циклов.
Конструкция циклов придумана именно такой как в первом варианте кода не зря, не нарушайте её, если не понимаете, зачем вы это делаете.