2016-02-19 105 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); //遇到重复数据时抛出异常

我认为如果你发布了如何比较这些行,我的意思是,如果你正确比较了行的内容而不是指向一个对象的指针内存

相关问题