2010-10-13 51 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 []; 創建的分數即得到泡沫排序

然後作爲你有一個排序INT [] player_score陣列,可以嘗試通過在字符串的元素的子串,以匹配它的單個陣列[] playername +得分

編輯: 所以在冒泡排序之後,當你要打印它時,可能需要採用新排序的分數數組,嘗試匹配String [] playername +分數數組的適當元素,然後打印出與排序的分數數組的第0,第1,第2個值匹配。

2

這是因爲你的排序只是player_score陣列:

bubble_srt(player_score, player_score.length); 

你還需要將player_name陣列發送到功能,排序爲你在之前排序(基於評分)和每次換時間兩個分數,你必須交換名稱。