Question

field = new int[input.Width][][];

for (int x = 0; x < input.Width; x++)
{
       field[x] = new int[input.Height][];

       for (int y = 0; y < 3; y++)
       {
           field[x][y] = new int[3];
       }
}

For some reason the above code is giving me out of range exception but the following works fine:

field = new int[input.Width][][];

for (int x = 0; x < input.Width; x++)
{
       field[x] = new int[input.Height][];

}

for (int y = 0; y < input.Height; y++)
{

       for (int x = 0; x < input.Width; x++)
       {
            field[x][y] = new int[3];                   

            field[x][y][0] = random.Next(0, output.Width);
            field[x][y][1] = random.Next(0, output.Height);
            field[x][y][2] = MaskFunctions.DSCALE;

        }
 }

Can anyone point out what am i doing wrong?

Also: Is there a difference between out of range and out of bound exception?

Was it helpful?

Solution

Your inner loop goes from 0 to 3, instead of 0 to input.Height. This will produce an out of range exception when input.Height < 3.

You probably meant to do this:

field = new int[input.Width][][];

for (int x = 0; x < input.Width; x++)
{
       field[x] = new int[input.Height][];

       for (int y = 0; y < input.Height; y++)
       {
           field[x][y] = new int[3];
       }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top