none
Работа с ArrayList RRS feed

  • Вопрос

  • Создаю массив:

    for (int i = 0; i < arrayDiff.Length; i++)
                        {
                            n[i] = new ArrayList();
                            n2[i] = new ArrayList();
                            for (int j = 1; j < Int32.Parse(textBox3.Text); j++)
                            {
                                temp += (float)arrayDiff[i][j];
                                if (del == 10)
                                {
                                    n[i].Add(temp / 10);
                                    n2[i].Add(arrayDiff[0][j]);
                                    temp = 0;
                                    del = 0;
                                }
                                del++;
                                
                            }   
                        }

     Ошибка происходит вот здесь на первой же итерации:

    temp += (float)arrayDiff[i][j];

    Текст ошибки: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.

    PS. Массивы заполнены и проинициализированы.

    Вопрос 2: как обратиться например ко 2 ArrayList и к его 5 элементу?

    • Перемещено Tagore Bandlamudi 1 октября 2010 г. 22:03 MSDN Forums consolidation (От:Visual C#)
    5 апреля 2010 г. 12:25

Ответы

  • заполнение было таким:

    arrayDiff[0].Add(MF1.Eng.Points[0]); 


    Points - это float[][].

    потом переписал в цикле вот так:

     


    for (int i = 0; i < MF1.Eng.GetEQCount(); i++)
    {

    for (int k = 0; k < MF1.Eng.Points[i].Length; k++) { arrayDiff[count].Add(MF1.Eng.Points[i + 1][k]); }
    count++;
    }

     и стало работать.

     

     

     

     

    • Помечено в качестве ответа sharok 5 апреля 2010 г. 14:04
    5 апреля 2010 г. 14:03

Все ответы

  • Посмотрите в отладчике значение переменных i и j, во время остановки, и все стане ясно. И сравните с размером arrayDiff.
    5 апреля 2010 г. 12:52
  • Приведите пример инициализации arrayDiff

    и обратите заодно внимание, что

    for (int i = 0;

    а

     for (int j = 1;

    5 апреля 2010 г. 13:50
  • заполнение было таким:

    arrayDiff[0].Add(MF1.Eng.Points[0]); 


    Points - это float[][].

    потом переписал в цикле вот так:

     


    for (int i = 0; i < MF1.Eng.GetEQCount(); i++)
    {

    for (int k = 0; k < MF1.Eng.Points[i].Length; k++) { arrayDiff[count].Add(MF1.Eng.Points[i + 1][k]); }
    count++;
    }

     и стало работать.

     

     

     

     

    • Помечено в качестве ответа sharok 5 апреля 2010 г. 14:04
    5 апреля 2010 г. 14:03