2014-10-22 28 views
0

文本文件是這樣的:閱讀字符串和從BufferedReader中的文本文件詮釋到HashSet中的Java

名1

名2

的方法打印:

[name:name1 shirt number:1]

這是我想它打印:

[名:名1球衣號碼:1,名稱:NAME2球衣號碼:2,依此類推]

它只打印的第一要素。感覺像我嘗試了一切,但我無法讓它工作。有人得到了可能的解決方案?

public void loadPlayerDatabase(String fileName) throws IOException { 

    try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) { 

     String currentLine; 
     int counter = 0; 
     String name = null; 

     while ((currentLine = reader.readLine()) != null) { 
      int number = Integer.parseInt(reader.readLine()); 
      if (counter % 2 == 0) { 
       name = currentLine; 
       counter++; 

      } else { 
       Player player = new Player(); 
       player.setName(name); 
       players.add(player); 
       player.setNumber(number); 
       counter++; 
      } 
     } 
     counter++; 
    } catch (NumberFormatException n) { 
     System.out.println("That didn't work!" + n.getMessage()); 
    } 
    System.out.println(players); 
} 
+2

因爲您只添加一個名稱。如果(計數器%2)嘗試刪除您的條件。 – Hunsu 2014-10-22 10:52:44

+0

「玩家」在哪裏定義? – 2014-10-22 10:54:51

+0

private final Set設置 players = new HashSet <>(); 玩家是我的HashSet。我在課堂上有它。 – Baaananz 2014-10-22 10:57:16

回答

0

This應該工作。

readLine()函數繼續到輸入中的下一行,因此您不需要跳過行。

+0

這種工作。 我加了int counter = 0; 否則變量計數器從不使用。 另外它警告String name = null;分配的值從不使用。 – Baaananz 2014-10-22 11:09:51

+0

我更新了gist文件。 – 2014-10-22 11:12:00

+0

這工作。謝謝您的幫助! 現在回到修復代碼的其他部分:) – Baaananz 2014-10-22 11:19:06