Foros del Web » Programación para mayores de 30 ;) » Java »

Error al ordenar archivo.txt con el metodo burbuja

Estas en el tema de Error al ordenar archivo.txt con el metodo burbuja en el foro de Java en Foros del Web. HOla amigos estoy tratando de ordenar un archivo plano que tiene n posiciones con el método de ordenamiento burbuja. Lo que hago es extraer los ...
  #1 (permalink)  
Antiguo 28/10/2013, 22:45
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 7 meses
Puntos: 0
Error al ordenar archivo.txt con el metodo burbuja

HOla amigos estoy tratando de ordenar un archivo plano que tiene n posiciones con el método de ordenamiento burbuja. Lo que hago es extraer los datos del archivo, capturarlos todos en un arreglo que lo llame x[j] y pues teniedo este arreglo se supone que debo ordenarlo con el metodo y generar un archivo de salida con los datos ordenados. Pero me sale el siguiente error. Si alguien me puede colaborar enlo que estoy haciendo mal le agradeceria mucho.


Código:
import java.io.*; 
import java.util.ArrayList; 
class PruebaPrecio{
    public static void main(String [] arg) { 
        int aux;
        File archivo = null; 
        FileReader fr = null; 
ArrayList<String> lineas = new ArrayList<String>(); 
        
try { 
	archivo = new File ("C:/Users/Nando Cruz/Desktop/Sin ordenar1/prueba_ent.txt"); 
        FileWriter fw = new FileWriter("C:/Users/Nando Cruz/Desktop/Ordenados/prueba_sal.txt");
        BufferedWriter bw = new BufferedWriter(fw);
	String linea; 
	fr = new FileReader (archivo); 
	BufferedReader br = new BufferedReader(fr); 
		while((linea=br.readLine())!=null)
		{ 
			lineas.add(linea);
		} 

for (int j = 0 ; j < lineas.size() ; j++)
{ 
	linea = lineas.get(j);
	int[] x = new int[lineas.size()];
	x[j] = Integer.parseInt(linea);
	//System.out.print (x[j]+"\n"); 
        
	for (int i=0; i<x.length;i++)
	{
		for (int k=0; k<x.length-1;k++)
		{
			if (x[j]>x[j+1])
			{
				aux=x[j];
				x[j]=x[j+1];
				x[j+1]=aux;
			}
		}
	}
        
	bw.write(String.valueOf(x[j]));
	bw.newLine();
        
        
}//cierra for principal	
	}
	//FIN DEL TRY 
catch(IOException e){ 
System.out.println(e); 
} 
System.exit(0);} 
}

Este es el error que me sale:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8 at PruebaPrecio.main(PruebaPrecio.java:36)
  #2 (permalink)  
Antiguo 29/10/2013, 02:19
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Error al ordenar archivo.txt con el metodo burbuja

El fallo está en esta linea

Código Java:
Ver original
  1. x[j]=x[j+1];

El tamaño que has definido para el array "x" y tiene índices válidos entre el "0" y "lineas.size()-1".

Si te fijas, la variable "j" estará siempre entre esos valores:

Código Java:
Ver original
  1. for (int j = 0 ; j < lineas.size() ; j++)

Pero en el momento en que accedes a "x[j+1]" estás pudiendo acceder a posiciones fuera del array. Es decir, cuando "j" está en la última vuelta del bucle "for" tiene el valor "j=lineas.size()-1" que es la última posición válida dentro de x. Pero si accedes a la siguiente (j+1) provocas la excepción.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 29/10/2013, 10:16
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Error al ordenar archivo.txt con el metodo burbuja

Hola si gracias. pero pues es que esa linea x[j]=x[j+1]; es para comparar si el objeto de la izquierda es mayor al de la derecha para hacer el cambio de posición en el ordenamiento. Trate de sacar los bucles de ordenamiento pero no me tomaria el arreglo x[j] oviamente. en este caso que sugieres. bueno si no es mucha molestia :)

Etiquetas: burbuja, metodo, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:46.