|    
			
				17/10/2015, 17:14
			
			
			  | 
  |   |  |  |  |  Fecha de Ingreso: octubre-2015 
						Mensajes: 4
					 Antigüedad: 10 años Puntos: 1 |  | 
  |  Respuesta: Urgente_System.arraycopy  
  El problema está en el número de elementos que copias. arraycopy() copia desde la posición indicada hasta "longitud - 1", según dice esta página: http://www.tutorialspoint.com/java/lang/system_arraycopy.htm
 En la primera llamada a arraycopy() indicas una longitud de  "i - 1", pero no es necesario restar uno porque lo hace automáticamente. El valor correcto para la longitud es "i".
 
 En la segunda llamada le pides a arraycopy() que copie tantos elementos como tenga "aux" empezando en el la posición "i + 1", momento en que se produce el error. Lo correcto es restar al total de elementos los ya copiados (aux.length - i), para que copie los restantes.
 
 
 public void eliminarNino(Nino n[], int mat, Nino aux[]){
 System.out.println("\nTam n: "+n.length+"\nTam aux: "+aux.length);
 
 for (int i = 0; i < n.length; i++) {
 if (n[i].matricula==mat){
 n[i]=null;
 if(n[0]!=null){
 
 // El nº de elementos copiados debe ser i, no i-1
 System.arraycopy(n, 0, aux, 0, i);
 
 if((i+1)<n.length){
 
 // Esta vez copiamos la segunda parte de la lista. Al nº total de elementos
 // se le resta el nº de elementos ya copiados (incluido el eliminado)
 System.arraycopy(n, i+1, aux, i, aux.length - i);
 
 System.out.println("\nVal n: "+n[i]+"\nVal aux: "+aux[i]);
 }
 n=aux;
 }
 }
 }
 }
     |