2016-05-10 90 views
0

我需要讀取txt文件並將我的數據存儲到treeSet。從txt讀取並添加到treeset

public class UrbanPopulationStatistics { 

private Set<UrbanPopulation> popSet; 
private File file; 
private BufferedReader br; 

public UrbanPopulationStatistics(String fileName) throws IOException { 

    this.popSet = new TreeSet<>(); 

    readFile("population.txt"); 
} 

private void readFile(String fileName) throws IOException { 


    try { 
     br = new BufferedReader(new FileReader(fileName)); 
     String line; 
     while ((line=br.readLine()) != null) { 


      String[] array = line.split("/"); 

      popSet.add(new UrbanPopulation(array[0], Integer.parseInt(array[1]), Integer.parseInt(array[4]))); 

     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    br.close(); 
} 

@Override 
public String toString() { 
    String s = popSet.toString().replaceAll(", ", ""); 
    return "UrbanPopulationStatistics:\n" + s.substring(1, s.length() - 1) + "\n"; 
} 


public static void main(String[] args) throws IOException { 
    UrbanPopulationStatistics stats = new UrbanPopulationStatistics("population.txt"); 
    System.out.println(stats); 
} 

} 

我曾試圖把什麼緩存讀取器讀取到一個數組,然後將其添加到我的TreeSet的,但我得到的錯誤:異常線程「main」 java.lang.UnsupportedOperationException:尚未支持。

+0

我可能需要添加,文本文件中的每一行有5個元素用「/」分隔。我需要第一個元素,它是一個字符串,第二個和最後一個 - 它們是數字。 – gheithen

+0

你是什麼意思,但這似乎並沒有解決我的問題?拋出異常?意外的輸出? – Frank

+0

我在popSet.add部分收到錯誤消息。它表示預期 – gheithen

回答

0

您的代碼存在的問題是您沒有存儲您從緩衝區讀取的內容(並因此從緩衝區讀取兩次)。您需要爲您分配一個變量讀什麼檢查如下空:

private void readFile(String fileName) throws IOException { 

     try { 
      br = new BufferedReader(new FileReader(fileName)); 
      String line = null; 
      while ((line = br.readLine()) != null) { 
       String[] array = line.split("/"); 

       popSet.add(new UrbanPopulation(array[0], Integer.parseInt(array[1]), Integer.parseInt(array[4]))); 

      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      br.close(); 
     } 
    } 

此外,我將關閉的BufferedReader在finally塊以避免資源泄漏。

+0

謝謝,我仍然在這裏得到了標識符問題,我嘗試將數組添加到treeSet – gheithen

+0

,正如其他人所建議的那樣,這可能是由於編譯問題(由於Integer.parseInt中的額外點()。嘗試解決這個問題。我已經更新了編譯錯誤的修復代碼。 – Vijay

+0

我也更新了它。現在我收到這條消息:線程「main」中的異常java.lang.UnsupportedOperationException:不支持 – gheithen

2

您在parseIntInteger.parseInt.(array[4])));之後有額外的時間。

編寫代碼時要小心。語法錯誤不會「很好地」顯示,即錯誤消息在大多數情況下不是很有用。它確實顯示了錯誤的大概位置。

+0

刪除它,仍然出錯 – gheithen

+2

你已經做好了在另一個'parseInt'上也是一樣的錯誤。來吧,注意一下。 – Kayaman

+0

我沒有刪除期限! – gheithen

0

我試圖用你的代碼重現錯誤,但它沒有發生。你的代碼是可以的。

UnsupportedOperationException是當您嘗試在集合中添加元素時可能發生的異常。

但是TreeSet實現了add方法。