scusatemi, riprovo a mettere il codice:
codice:
//Dichiarazione di Agent
package Package_simulation;
public class Agent
{
private int ID;
private int Agent_x;
private int Agent_y;
private int Spec;
private int Satisfaction;
public Agent(int i, int p)
{
//System.out.println("Agente "+i);
ID=i;
Agent_x=(int)(Math.random()*10);
Agent_y=(int)(Math.random()*10);
Spec=p;
Satisfaction=8;
}
//dichiarazione di Point
package Package_simulation;
import java.util.*;
public class Point
{
static final int max_time=40; //è il numero di passi che fa la mia simulazione
private int X;
private int Y;
private int Label;
//I tre che seguono servono per l'output grafico
private int Point_red;
private int Point_blue;
private int Point_green;
public Vector<Agent>Agent_A;
public Vector<Agent> Agent_B;
public Point(int coord_x, int coord_y)
{
X=coord_x;
Y=coord_y;
Label=-1;
Agent_A=new Vector<Agent>();
Agent_B=new Vector<Agent>();
Point_red=255;
Point_green=255;
Point_blue=255;
}
OVVERO gli agenti si muovono e, quando capitano nel punto, vengono salvati in Agent_A o Agent_B (a seconda della loro specializzazione).
Il metodo che restituisce errori è:
codice:
//Class Agent
public void Change_Spec(int sA, int sB, Point a)
{
double aux1;
double aux2=Math.random();
int max=sA;
if(sB>sA)
{
max=sB;
}
if(sA+sB>0)
{
if(this.Spec==0)
{
if(this.Satisfaction<max)
{
aux1=0.5*(sB/(sA+sB));
if(aux2<aux1)
{
a.Change_Spec_agent(this);
}
}
}
if(this.Spec==1)
{
if(this.Satisfaction<max)
{
aux1=0.5*(sA/(sA+sB));
if(aux2<aux1)
{
a.Change_Spec_agent(this);
}
}
}
}
che chiama a sua volta una funzione della class point:
codice:
public void Change_Spec_agent(Agent x)
{
if(x.Get_spec()==0)
{
x.Set_Spec(1);
this.Agent_A.removeElement(x);
this.Agent_B.add(x);
}
if(x.Get_spec()==1)
{
x.Set_Spec(0);
this.Agent_B.remove(x);
this.Agent_A.add(x);
}
}
il messaggio di errore è sempre
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5>=5
//(ma a volte 3>=3, 7>=7...)
at java.util.Vector.checkBoundExclusive(libgcj.so.81)
at java.util.Vector.ElementAt(libgcj.so.81)
at java.util.Vector.get(libgcj.so.81)
Spero che sia più chiaro così...