Arrays paralelos

Lidia
22 de Enero del 2009
Hola, a ver si me podeis ayudar. Tengo que hacer un proyecto en el que me piden crear un metodo llamar(numeroTlf) con arrays paralelos. Debe actualizar el array numerosMarcados y añadir un nuevo elemento al array duracionesLlamadas con valor 0.
El caso es que al ejecutarlo me da un error de NullPointerException. Este es mi código:

void llamar(String numeroTlf){
if (numeroTlf != null){
String [] auxNumMarcados;
int[] auxDuracionesLlamadas;
auxNumMarcados = new String[this.numerosMarcados.length + 1];
auxDuracionesLlamadas = new int[this.duracionesLlamadas.length + 1];

for (int i=0;i<this.numerosMarcados.length;i++){
for (int j=0;i<this.numerosMarcados.length;i++){
auxNumMarcados[i]=this.numerosMarcados[i];
auxDuracionesLlamadas[j]=this.duracionesLlamadas[j];
}
}

auxNumMarcados[auxNumMarcados.length-1] = numeroTlf;
auxDuracionesLlamadas[auxDuracionesLlamadas.length - 1] = 0;
this.setNumerosMarcados(auxNumMarcados);
this.setDuracionesLlamadas(auxDuracionesLlamadas);
}
}


Gracias!!

havalle
22 de Enero del 2009
Hola, sin saber el mensaje de error ni el numero de linea, igualmente me imagino que el error te lo da en los for() donde estas poblando los dos arrays, igualmente ahí hay bastantes errores que me imagino son de typeo, por ejemplo en el segundo for usas "j" e "i" y no solo "j", tambien estas usando "numerosMarcados.length", cuando deberías utilizar "duracionesLlamadas.length", por lo que te puede estar dando el error, aunque tampoco entiendo porque usas bucles anidados, cuando necesitarias dos dostintos, es decir:

for (int i=0;i<this.numerosMarcados.length;i++){
auxNumMarcados[i]=this.numerosMarcados[i];
}

//no hace falta usar j, vuelvo a usar i, y por supuesto duracionesLlamadas y no numerosMarcados
for (int i=0;i<this.duracionesLlamadas.length;i++){
auxDuracionesLlamadas[i]=this.duracionesLlamadas[i];
}

Aunque en el caso de que siempre el length de numerosMarcados sea el mismo que el de duracionesLlamadas (cosa que parece que deberia ser así), usaría solo un for()

for (int i = 0; i < this.numerosMarcados.length; i++)
{
auxNumMarcados[i]=this.numerosMarcados[i];
auxDuracionesLlamadas[i]=this.duracionesLlamadas[i];
}

Creo que eso es todo, aunque el mensaje de NullPointerException no sería el mismo que un ArrayIndexOutOfBoundsException, en el caso que quisieras acceder a un elemento del array que estubiera fuera del rango (que uno de los arrays tubiera 5 elementos y quisieras acceder al indice 22, por ejemplo).

Espero que te haya podido ayudar, sino cualquier cosa si puedes poner la linea y el error completo sería mas facil.

Un saludo, Hernán.