Fallo java.lang.StackOverflowError
Publicado por Elias (6 intervenciones) el 03/01/2012 17:00:06
Buenas,
Antes de nada un saludo a todo el foro. Espero que la duda que traigo me haya servido para iniciarme en vuestra comunidad y espero poder aportar mis escasos conocimientos a toda esta familia.
Estoy realizando un programa en Java que a través de un fichero de entrada de las dimensiones de una serie de edificios, me devuelva un fichero de salida en el que se especifique el Skyline (visión desde el horizonte) de estos edificios.
Os detallo el código para que podáis echarme una cable:
temp = ciudad.size();
DyV(ciudad, 0, temp, linea);
}
public static void DyV(ArrayList<edificio> c, int i, int j, ArrayList<TipoSkyline> s) {
int m,n;
ArrayList<TipoSkyline> s1 = new ArrayList<TipoSkyline>();
ArrayList<TipoSkyline> s2 = new ArrayList<TipoSkyline>();
m = (i + j - 1)/2;
n = j - i + 1;
if (n == 1) {
s.add(new TipoSkyline(Integer.valueOf(c.get(0).getInicio()), (Integer.valueOf(c.get(0).getAltura()))));
}
else; {
DyV(c, i, m, s1);
DyV(c, m+1, j, s2);
Combinar(s1, s2, s);
}
}
El problema viene en la creación del objeto s1 y s2 (new Tiposkyline...) y a las 2 llamadas recursivas a DyV...
Ambas me devuelven error "java.lang.StackOverflowError".
Entiendo que son errores por llamadas recursivas infinitas. Pero tambien en la creación del objeto s1 y s2??
No tengo un caso base bien creado (n == 1) que evita esas llamadas recursivas infinitas??
Gracias anticipadas por todo y un saludo.
Elias.
Antes de nada un saludo a todo el foro. Espero que la duda que traigo me haya servido para iniciarme en vuestra comunidad y espero poder aportar mis escasos conocimientos a toda esta familia.
Estoy realizando un programa en Java que a través de un fichero de entrada de las dimensiones de una serie de edificios, me devuelva un fichero de salida en el que se especifique el Skyline (visión desde el horizonte) de estos edificios.
Os detallo el código para que podáis echarme una cable:
temp = ciudad.size();
DyV(ciudad, 0, temp, linea);
}
public static void DyV(ArrayList<edificio> c, int i, int j, ArrayList<TipoSkyline> s) {
int m,n;
ArrayList<TipoSkyline> s1 = new ArrayList<TipoSkyline>();
ArrayList<TipoSkyline> s2 = new ArrayList<TipoSkyline>();
m = (i + j - 1)/2;
n = j - i + 1;
if (n == 1) {
s.add(new TipoSkyline(Integer.valueOf(c.get(0).getInicio()), (Integer.valueOf(c.get(0).getAltura()))));
}
else; {
DyV(c, i, m, s1);
DyV(c, m+1, j, s2);
Combinar(s1, s2, s);
}
}
El problema viene en la creación del objeto s1 y s2 (new Tiposkyline...) y a las 2 llamadas recursivas a DyV...
Ambas me devuelven error "java.lang.StackOverflowError".
Entiendo que son errores por llamadas recursivas infinitas. Pero tambien en la creación del objeto s1 y s2??
No tengo un caso base bien creado (n == 1) que evita esas llamadas recursivas infinitas??
Gracias anticipadas por todo y un saludo.
Elias.
Valora esta pregunta
0