Pregunta

¿Cómo adecuadamente ordenamiento de burbuja a través de un archivo de texto mediante la asignación de los valores de una matriz. En el siguiente código I tratado de asignar los valores del archivo de texto a una cadena, mientras que todavía hay algo a buscar. Luego utiliza un bucle para asignar el que he podido recuperar a la matriz. Luego trató de utilizar el ordenamiento de burbuja es de esperar a ordenar los números que he traeré de mayor a menor. Pero consigo éste como una salida:

5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  
10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  
4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  
20  20  20  20  20  20  20  20  20  20  20  20  20  20  20  20  20  20  20  20  
100  100  100  100  100  100  100  100  100  100  100  100  100  100  100  100  100  100  100  100  
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  
78  78  78  78  78  78  78  78  78  78  78  78  78  78  78  78  78  78  78  78  
12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  
29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  

Aquí está mi código:

     try{
 int i;
 String ss;
   FileReader fr;
      fr = new FileReader (new File("X:\\file.txt"));
      BufferedReader br = new BufferedReader (fr);


while ((ss = br.readLine()) != null) {
    String[] sv = ss.split(" ");


        String splayer_name=sv[1];
        String s_player_score=sv[2];

 for(int xy=0;xy<player_name.length;xy++){
        player_name[xy]=splayer_name;
        player_score[xy]=Integer.parseInt(s_player_score);
}


bubble_srt(player_score, player_score.length);

    for(i = 0; i <player_score.length; i++)
      System.out.print(player_score[i]+"  ");
    System.out.println();




  }

  }catch(Exception e){}

Por favor, ayuda,

actualización: alguien le preguntó acerca de la estructura de archivos, ¿se refiere a ésta: Este es el archivo.txt, la que me retracto es el número más a la derecha:

1 a 5
2 b 10
5 x 4
7 h 20
¿Fue útil?

Solución

  1. Mover el bucle y la llamada bubble_srt() fuera del bucle while. Va a sustituir la totalidad del contenido de cada iteración como lo que la respuesta anterior ha señalado correctamente. Sólo desea clase después el contenido del archivo enteras se leen.
  2. Desde el archivo puede ser de cualquier tamaño que no hay manera de inicializar la matriz de antemano a menos que desee realizar dos lecturas uno para obtener el recuento y después de leer en la matriz. Usted sería mejor usar una lista. Aquí hay un código esqueleto:

    try {
        int i;
        String ss;
        FileReader fr;
        fr = new FileReader(new File("file.txt"));
        BufferedReader br = new BufferedReader(fr);
        int xy=0;
        List<String> player_name = new ArrayList<String>();
        List<Integer> player_score = new ArrayList<Integer>();
    
    
    
    while ((ss = br.readLine()) != null) {
        String[] sv = ss.split(" ");
    
    
            player_name.add(sv[1]);
            player_score.add(Integer.parseInt(sv[2]));
    
    
    }
    
    
    bubble_srt(player_score);
    
    } catch (Exception e) { }

(Modificar el ordenamiento de burbuja para tomar una entrada de la lista)

Otros consejos

Creo que su principal problema es con el bucle:

 for(int xy=0;xy<player_name.length;xy++){
        player_name[xy]=splayer_name;
        player_score[xy]=Integer.parseInt(s_player_score);
}

Cada vez que se lee en una línea. Usted está reemplazando todo el contenido de la PLAYER_NAME * * matriz con el splayer_name, y las todo el contenido de la * player_score * con el valor int de s_player_score.

Supongo que lo que está tratando de hacer es añadir una única nueva entrada a player_name y reproductor de puntuación. El tamaño de las dos matrices tiene por qué ser igual al número de filas en el archivo de texto, por lo que es posible que desee utilizar alguna forma de lista en lugar de una matriz.

En tanto las matrices de almacenamiento (o listas) añaden el nombre de una vez y cuentas de una vez y creo que se dará bien en la manera de lo que está tratando de hacer.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top