The problem here is most likely in your array allocation, at the start.
Try this:
int numRows = (strat_list.Count + 3) / 4;
int[,] myArr = new int[numRows,4];
for (int i = 0; i < numRows; i++)
....
(Instead of "for (int i = 0; i < (strat_list.Count + 3) / 4; i++)".
Also, note my other post that the "j" loop should have been "for (int j
= 0; j < 4; j++)", not j < 3.)
GB wrote:
> Thank you,
> It gives me the 2 dimensional array of 12 by 4.
> Can I get the array of 3 by 4 ( to eleminate rows with 0's)?
>
> GB
>
> "Bruce Wood" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
> >
> > GB wrote:
> > > Hello:
> > > I have ArrayList strat_list of integers like this:
> > >
> > > index value
> > >
> > > [0] 3
> > > [1] 4
> > > [2] 2
> > > [3] 1
> > > [4] 6
> > > [5] 4
> > > [6] 3
> > > [7] 2
> > > [8] 5
> > > [9] 8
> > > [10] 6
> > > [11] 2
> > >
> > > I want to put the content of the list in 2 dimensional array to get a
> > > matrix like this:
> > > 3421
> > > 6432
> > > 5862
> > > This is what I am doing:
> > > int k = 4;
> > > int[,] myArr = new int[strat_list.Count,k];
> > > myArr = (int[,])strat_list.ToArray(typeof(int[,]));
> > >
> > > But it gives me InvalidCastException error.
> > > Could you give me a hint how to fix the problem?
> >
> > You have to write the loops yourself; this is not such a common problem
> > that the Framework methods will do it for you.
> >
> > for (int i = 0; i < (strat_list.Count + 3) / 4; i++)
> > {
> > for (int j = 0; j < 3; j++)
> > {
> > int k = i * 4 + j;
> > if (k < strat_list.Count)
> > {
> > myArr[i, j] = strat_list[k];
> > }
> > else
> > {
> > myArr[i, j] = 0; // or whatever the default should be
> > }
> > }
> > }
> >
|