2016-02-19 195 views
-1

//這是我的代碼。它應該做什麼:逐行讀入.txt文件。取每一行(以逗號分隔其信息),分割它,獲取每個數據並創建一個ObjectName2對象實例。使用addData方法將ObjectName2添加到ObjectName1。問題:讀取第一行的罰款,將其添加到ObjectName1。讀同一行,遇到重複行,拋出異常。保持閱讀第一行。它不會移動到第二行。從我看到的代碼中,它應該可以正常工作。任何幫助將不勝感激。這段代碼全部在另一個類中,比如ObjectName3。Java:爲什麼我的BufferedReader不能讀取我的代碼的下一行?

編輯:它會發生什麼事是打印出來的控制檯,它發現一個重複的行,說lineName。然後再次輸出到控制檯:找到重複行,lineName。然後,再次,一次又一次。它一直持續下去。這是無限的。它永遠不會超過第一條線。只是不斷說「重複的行:lineName」。

public ObjectName1 load() { 

    ObjectName1 list = new ObjectName1(); 
    BufferedReader fileIn; 
    String inputLine; 
    try { 
     fileIn = new BufferedReader(new FileReader(inputFileName)); 
     inputLine = fileIn.readLine(); // read in first line 
     while (inputLine != null) { 
      String[] listOfData = inputLine.split(","); 
      String data1= listOfData[0]; 
      String data2= listOfData[1]; 
      String data3= listOfData[2]; 
      int data4= Integer.parseInt(listOfData[3]); 
      int data5= Integer.parseInt(listOfData[4]); 
      ObjectName2 data= new ObjectName2(data1, data2, data3, data4, data5); 
      list.addData(data); // throws exception if duplicate data encountered 
      inputLine = fileIn.readLine(); // read in next line? 
     } 
    } 
    catch (Exception e) { // happens if we try to add duplicate data 
     System.out.println(e.getMessage()); 
    } 
    finally { 
     boolean lineAfterException = true;; 
     while (inputLine != null) { 
      if (lineAfterException) { 
       inputLine = fileIn.readLine(); 
       lineAfterException = false; 
      } 
      String[] listOfData = inputLine.split(","); 
      String data1 = listOfData [0]; 
      String data2 = listOfData [1]; 
      String data3 = listOfData [2]; 
      int data4 = Integer.parseInt(listOfData [3]); 
      int data5 = Integer.parseInt(listOfData [4]); 
      ObjectName2 data= new ObjectName2 (data1, data2, data3, data4, data5); 
      list.addData(data) 
      inputLine = fileIn.readLine(); 
     } 
    } 
    fileIn.close(); 
    return list; 
} 
+0

從ObjecName1類添加您的方法addData。 – Jimmy

+0

不會。確定會發生什麼,它會向控制檯打印出它找到重複的行,例如:lineName。然後再次輸出到控制檯:找到重複行,lineName。然後,再次,一次又一次。它一直持續下去。這是無限的。它永遠不會超過第一條線。 – Wings

回答

0

我認爲它實際上是在讀它。

可以驗證該加法這一行:

的System.out.println(inputLine);

後這一個:

inputLine = fileIn.readLine();


inputLine = fileIn.readLine();

System.out.println(inputLine);

我認爲你的問題是當你比較行,我的意思是,這一行: list.addData(data); //遇到重複數據時拋出異常

我認爲如果你發佈瞭如何比較這些行,我的意思是,如果你正確比較了行的內容而不是指向一個對象的指針內存

相關問題