2015-02-14 5 views
1
I have this code 

    ArrayList<ArrayList<Integer>> Pareto_set_List=new ArrayList<ArrayList<Integer>>(); 
     for(Optimization_Problem.General_Calculation.Get_Another_Solution=0;Optimization_Problem.General_Calculation.Get_Another_Solution<Input.General_Inputs.Monte_Carlo_Step;Optimization_Problem.General_Calculation.Get_Another_Solution++){ 
     int Count_Location=0; 
      for(Optimization_Problem.General_Calculation.Count_year=0;Optimization_Problem.General_Calculation.Count_year<Input.General_Inputs.Analysis_Period;Optimization_Problem.General_Calculation.Count_year++){ 
    //Run code Calculation not shown here. 
    for(int j=0;j<Input.General_Inputs.Num_Of_Ppes;j++){ 
       Pareto_set_List.get(Optimization_Problem.General_Calculation.Get_Another_Solution).add(EncodingUtils.getInt(solution.getVariable(j))); 
      Count_Location++;} 
      double[] objectives = solution.getObjectives(); 
      //System.out.println("Solution " + (1) + ":"); 
      Pareto_set_List.get(Optimization_Problem.General_Calculation.Get_Another_Solution).add((int) Math.floor(objectives[0])); Count_Location++; 
      Pareto_set_List.get(Optimization_Problem.General_Calculation.Get_Another_Solution).add((int) Math.floor(objectives[1])); Count_Location++; 
      Pareto_set_List.get(Optimization_Problem.General_Calculation.Get_Another_Solution).add((int) Math.floor(objectives[2])); Count_Location++; 
     } 
     } 
     Optimization_Problem.General_Calculation.Count_year=0; 
     } 
    } 

Когда я запускаю это я получаю эту ошибкуIndexOutOfBoundsException: Индекс: 0 Размер: 0 2D Список_массивов

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 
    at java.util.ArrayList.rangeCheck(Unknown Source) 
    at java.util.ArrayList.get(Unknown Source) 
    at Implementation_Method.main(Implementation_Method.java:53) 

Я думал, что список массив является динамическим, и я понятия не имею, почему я получил эту ошибку. Я трачу много времени на это, не решаясь, что любая помощь высоко ценится. Спасибо заранее.

ответ

0
Pareto_set_List.get(Optimization_Problem.General_Calculation.Get_Another_Solution).add(EncodingUtils.getInt(solution.getVariable(j))); 

До этого момента, вы, кажется, не добавлять ArrayList экземпляры в Pareto_set_List, поэтому ArrayList пуст. Когда вы пытаетесь извлечь элемент, расположенный по адресу Optimization_Problem.General_Calculation.Get_Another_Solution (который, как представляется, равен 0), генерируется исключение.

Что вы можете сделать, это добавить ArrayListPareto_set_List к следующим образом:

Pareto_set_List.add(new ArrayList<Integer>()); 

Вы можете найти полезную информацию here и несколько ссылок here.

+0

спасибо за ответ, но я уже определил список массивов в начале ArrayList > Pareto_set_List = new ArrayList >(); –

+0

Мне нужно сделать этот шаг непосредственно перед этой точкой, вы имеете в виду Pareto_set_List.get (Optimization_Problem.General_Calculation.Get_Another_Solution) .add (EncodingUtils.getInt (solution.getVariable (j))); –

+0

Возможно, вы определили и инициализировали 'Pareto_set_List', но добавили ли вы * какие-либо экземпляры' ArrayList', прежде чем вызывать 'get'? Если вы этого не сделаете, размер ArrayList будет равен 0, и попытка доступа к элементу по любому индексу приведет к тому, что исключение будет выбрано. – TNT

Смежные вопросы