Vale,eso lo ententiendo,pero como lo puedo solucionar? como hago una copia de un objeto sin usar la misma referncia en memoria en un bucle?, ya que no le puedo ir cambiando el nombre.
Quiero recorrer el camino e ir guardando los caminos en un vector.
public Camino recorrerCam(Camino cam,int f,int c,int[] fila,int[] col)
{
int numNod=this.matrizAdy.length;
int pos;
while (c<numNod)
{
while(!(this.existeAct(f,c)))
{
if ((c==(numNod-1))&(f!=0))
{
if (cam.tamaño()>=1)
{
pos=(cam.tamaño());
cam.eliminarCam();
col[pos]=(-1);
fila[pos]=(-1);
pos--;
c=col[pos];
f=fila[pos];
c++;
}
else
{
System.out.print("El tamaño del camino es menor de 1");
return(cam);
}
}
else if ((c==(numNod-1))&(f==0))
{
sigue=false;
return(cam);
}
else
c++;
}
//Fin de mientras no exista elemento
if (c==(numNod))
{
sigue=true;
return(cam);
}
else
{
if ((c==(numNod-1))&(f==0))
{
Actividad temp;
temp = this.extraerElem(f,c);
cam.insertarCam(temp);
sigue=false;
return(cam);
}
else
{
Actividad temp;
temp = this.extraerElem(f,c);
cam.insertarCam(temp);
pos=(cam.tamaño()-1);
fila[pos]=f;
col[pos]=c;
f=c;
c++;
}
}
}
return(cam);
}
public Caminos crearCaminos()
{
int numNod;
numNod=this.tamMatriz();
int f,c,i;
int[]fila = new int[numNod];
int[]col = new int[numNod];
for(i=0;i<numNod;i++)
{
fila[i]=(-1);
col[i]=(-1);
}
Caminos caminos=new Caminos();
Camino camino=new Camino();
Camino prueba = new Camino();
f=0;
c=0;
int cont=(-1);
int pos=0;
sigue=true;
int w=0;
while(sigue)
{
Camino temp = new Camino();
temp=recorrerCam(camino,f,c,fila,col);
if (w==1)
{
prueba=(Camino)temp.clone();
System.out.println("Solo se asigna aqui ");
}
System.out.println("Temp ");
temp.mostrarCam();
System.out.println("***");
System.out.println("Prueba "+w);
prueba.mostrarCam();
System.out.println("*** ");
w++;
if (sigue)
{
caminos.insertarCamS(temp);
camino.mostrarCam();
System.out.println(" ");
pos=(camino.tamaño());
camino.eliminarCam();
pos=(camino.tamaño());
col[pos]=(-1);
fila[pos] =(-1);
pos=(camino.tamaño()-1);
c=(col[pos]);
c++;
f=fila[pos];
}
else
if (!(temp.vacioCam()))
{
caminos.insertarCamS(temp);
camino.mostrarCam();
System.out.println(" ");
}
}
return(caminos);
}