ArrayList.ToArray question

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • GB

    ArrayList.ToArray question

    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.Coun t,k];
    myArr = (int[,])strat_list.ToA rray(typeof(int[,]));

    But it gives me InvalidCastExce ption error.
    Could you give me a hint how to fix the problem?

    Thanks,
    GB




  • Bruce Wood

    #2
    Re: ArrayList.ToArr ay question


    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.Coun t,k];
    myArr = (int[,])strat_list.ToA rray(typeof(int[,]));
    >
    But it gives me InvalidCastExce ption 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.Cou nt + 3) / 4; i++)
    {
    for (int j = 0; j < 3; j++)
    {
    int k = i * 4 + j;
    if (k < strat_list.Coun t)
    {
    myArr[i, j] = strat_list[k];
    }
    else
    {
    myArr[i, j] = 0; // or whatever the default should be
    }
    }
    }

    Comment

    • GB

      #3
      Re: ArrayList.ToArr ay question

      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" <brucewood@cana da.comwrote in message
      news:1156886851 .406433.311860@ h48g2000cwc.goo glegroups.com.. .
      >
      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.Coun t,k];
      myArr = (int[,])strat_list.ToA rray(typeof(int[,]));

      But it gives me InvalidCastExce ption 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.Cou nt + 3) / 4; i++)
      {
      for (int j = 0; j < 3; j++)
      {
      int k = i * 4 + j;
      if (k < strat_list.Coun t)
      {
      myArr[i, j] = strat_list[k];
      }
      else
      {
      myArr[i, j] = 0; // or whatever the default should be
      }
      }
      }
      >

      Comment

      • Bruce Wood

        #4
        Re: ArrayList.ToArr ay question


        Bruce Wood wrote:
        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.Coun t,k];
        myArr = (int[,])strat_list.ToA rray(typeof(int[,]));

        But it gives me InvalidCastExce ption 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.Cou nt + 3) / 4; i++)
        {
        for (int j = 0; j < 3; j++)
        {
        int k = i * 4 + j;
        if (k < strat_list.Coun t)
        {
        myArr[i, j] = strat_list[k];
        }
        else
        {
        myArr[i, j] = 0; // or whatever the default should be
        }
        }
        }
        Sorry... should have been "for (int j = 0; j < 4; j++)" not j < 3.

        Comment

        • Bruce Wood

          #5
          Re: ArrayList.ToArr ay question

          The problem here is most likely in your array allocation, at the start.
          Try this:

          int numRows = (strat_list.Cou nt + 3) / 4;
          int[,] myArr = new int[numRows,4];
          for (int i = 0; i < numRows; i++)
          ....

          (Instead of "for (int i = 0; i < (strat_list.Cou nt + 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" <brucewood@cana da.comwrote in message
          news:1156886851 .406433.311860@ h48g2000cwc.goo glegroups.com.. .

          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.Coun t,k];
          myArr = (int[,])strat_list.ToA rray(typeof(int[,]));
          >
          But it gives me InvalidCastExce ption 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.Cou nt + 3) / 4; i++)
          {
          for (int j = 0; j < 3; j++)
          {
          int k = i * 4 + j;
          if (k < strat_list.Coun t)
          {
          myArr[i, j] = strat_list[k];
          }
          else
          {
          myArr[i, j] = 0; // or whatever the default should be
          }
          }
          }

          Comment

          Working...