2010-10-13 3 views
2

Как сделать пузырьковую сортировку в Java, Текстовый файл выглядит следующим образом:Как пузырьковой сортировки через текстовый файл в Java

aaa 

2 

bbb 

3 

ccc 

1 

Что мне нужно сделать, это петли через него и дисплей самый высокий балл до самого низкого. Когда я запустил код ниже, цифры уже отсортированы. и он отобразит 3, 2, затем 1. Но имя не синхронизируется с соответствующим счетом, оно будет отображать только имена, основанные на первом. Таким образом, выход будет в основном выглядеть, если я запускаю код ниже:

aaa 3 

bbb 2 

ccc 1 

Функция:

public void hi_score(){ 
    int i=0; 
     try { 
       FileReader fr; 
      fr = new FileReader (new File("F:\\pscores.txt")); 
      BufferedReader br = new BufferedReader (fr); 
      int ar=0; 
      for(ar=0;ar<10;ar++){ 
      player_name[ar]=br.readLine(); 
      player_score[ar]=Integer.parseInt(br.readLine()); 
      } 

      } catch (Exception e) { e.printStackTrace();} 

       bubble_srt(player_score, player_score.length); 
     System.out.print("Highscores:\n"); 
     System.out.println("Scores"); 

     System.out.println("Name\tScore"); 
     for(i = 0; i <NUMBER_OF_HI_SCORE; i++){ 
      System.out.print(player_name[i] + "\t" +player_score[i] + "\n"); 

     } 
    } 

Как это сделать, не используя ArrayList. Просто обычный массив.

ответ

2

Должен создать единый массив, который объединяет игрока и соответствующий балл как String []; создать единый массив оценок, которые получают пузырь отсортирован

тогда, как у вас есть отсортированный ИНТ [] player_score массив, вы можете попробовать, чтобы соответствовать его с помощью подстроки элементов в String [] PlayerName + оценку

отредактируйте: , поэтому после сортировки пузыря, когда вы собираетесь его распечатать, возможно, возьмите вновь отсортированный массив баллов, попробуйте сопоставить соответствующий элемент массива String [] с именем пользователя + оценка, затем распечатайте элемент, который соответствует 0-му, 1 -му, 2-му значениям сортированного массива баллов.

2

Это происходит потому, что вы разбираете только player_score массива:

bubble_srt(player_score, player_score.length); 

Вы также должны послать player_name массив функции, вроде как вы разбирали раньше (на основе баллов), и каждый раз, когда вы поменяться два счета, вам также придется поменять имена.

Смежные вопросы