2016-11-19 51 views
-1

我想從一個文本文件中讀取以下數據:讀雙和字符串從文本文件無法顯示所有記錄

3.8 Lisa 
3.6 John 
3.9 Susan 
3.7 Kathy 
3.4 Jason 
3.9 David 
3.4 Jack 
3.9 Andy 
3.8 Fox 
3.9 Minnie 
2.7 Goofy 
3.9 Doc 
3.4 Danny 

我再整理並打印出來。但是,我的輸出是刪除重複項目,我需要顯示完整列表。

輸出:

run: 
2.7 Goofy 
3.4 Danny 
3.6 John 
3.7 Kathy 
3.8 Fox 
3.9 Doc 
BUILD SUCCESSFUL (total time: 0 seconds) 

這裏是我的代碼:

package highestgpa; 
import java.util.*; 
import java.io.*; 

public class Main 
{ 

    public static void main(String[] args) throws IOException 
    { 
     BufferedReader br = new BufferedReader(new FileReader("StudentGPA.txt")); 
     Map<Double, String> items = new TreeMap<Double, String>(); 

     String line; 
     while (null != (line = br.readLine())) 
     { 
      String[] line_parts = line.split(" "); 
      if (line_parts.length > 1) 
      { 
       StringBuilder desc = new StringBuilder(line_parts[1]); 
       for (int i = 2; i < line_parts.length; i++) 
       { 
        desc.append(line_parts[i]); 
       } 
       items.put(new Double (line_parts[0]), desc.toString()); 
      } 
     } 

     for (Double key: items.keySet()) 
     { 
      System.out.println(key + " " + items.get(key)); 
     } 
    } 
} 

任何幫助將不勝感激。謝謝!

+2

「但是,我的輸出是刪除重複的項目」 - 是的,你正在使用'TreeMap'。您如何期望在地圖中獲得單個條目的多個值?這聽起來像你想要一個MultiMap ... –

回答

1

您正在使用GPA作爲關鍵。當您讀入具有相同GPA的人並將其添加到地圖中時,它會用相同的GPA密鑰替換以前的項目。

而是嘗試使用該名稱作爲密鑰。

Map<String, Double> items = new TreeMap<String, Double>(); 

... 

items.put(desc.toString(),new Double (line_parts[0])); 

... 

for (String key: items.keySet()) 
{ 
    System.out.println(key + " " + items.get(key)); 
} 
+1

我相信預期的輸出是由GPA排序的列表。該解決方案還可以刪除重名。 –

+0

@ cricket_007是正確的。我還希望通過GPA排列名單。建議? –