Lo primero, muchas muchas gracias a los dos por tomaros la molestia de tratar de ayudarme.
Respecto del código, no lo he puesto por dos motivos. El primero es que son casi 400 líneas y (creo yo) desmoralizaría a cualquiera que quiera ayudar. El segundo es que se trata de un trabajo para mi universidad y ni siquiera sé si puedo publicarlo sin infringir alguna norma y acabar suspendido.
Pero os copio/pego las partes que me parecen relevantes y si veis que necesitáis más información, pues me lo decís y hago los copia/pega que hagan falta.
Primero os pongo un esquema general de la estructura del programa:
La clase que definí (en otros lenguajes habría definido un tipo abstracto de datos, pero en Java... no sé si estoy haciendo lo correcto) está situada en el primer bloque, junto a las variables, y fue ésta:
static class TAD {
int x, y, N, futuro;
int matriz[][];
}
Y el problema lo detecté al utilizar esa clase desde un método (desde uno de los bloques 'método n') para hacer un ArrayList formado por elementos de esa clase. El código de ese método es éste:
static List<TAD> crearLista(TAD ensayo) {
List<TAD> lista = new ArrayList<>();
TAD test = new TAD();
test.matriz = new int[tamañoMatriz][tamañoMatriz];
copiarTAD(ensayo, test);
for (int a = -2; a < 3; a++) {
for (int b = -2; b < 3; b++) {
if (((Math.abs(a)) + (Math.abs(b)) == 3)
&& (ensayo.matriz[ensayo.x + a][ensayo.y + b] == 0)) {
test.x = ensayo.x + a;
test.y = ensayo.y + b;
test.N = ensayo.N + 1;
test.futuro = hacerListaDeEnteros(test);
lista.add(test);
}
}
}
return lista;
}
Ese método lo llamo desde main con este código:
lista1 = crearLista(ensayo);
Luego compruebo con lista1.size() que la lista tiene 2 elementos (eso está bien, es lo que esperaba) pero cuando compruebo los elementos veo que son iguales, y no deberían serlo.
Y aquí me quedé atascado.
No sé cómo seguir. Si quito el valor static del tipo de datos que yo definí (TAD), entonces no puedo invocarlo desde los métodos o desde main. Si no lo quito, el valor del contenido del registro es igual para todos los elementos de la lista 'lista1'.
Agradecería cualquier ayuda. Un saludo.