//这是我的代码。它应该做什么:逐行读取.txt文件。取每行(其信息用逗号分隔),拆分它,获取每个数据并创建一个ObjectName2对象实例。使用addData方法将ObjectName2添加到ObjectName1。问题:读取第一行正常,将其添加到ObjectName1。读同一行,遇到重复行,抛出异常。继续阅读第一行。它不会再进入第二线。从我看到的代码,它应该工作正常。任何帮助将不胜感激。这段代码全部在另一个类中,比如ObjectName3。
编辑:会发生什么,它会打印到控制台发现重复的行,比如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 :(得分:0)
我认为它实际上是在阅读它。
你可以通过以下方式验证这一点:
的System.out.println(inputLine);
在此之后:
inputLine = fileIn.readLine();
inputLine = fileIn.readLine();
的System.out.println(inputLine);
我认为你的问题是当你比较线条时,我的意思是,这一行: list.addData(数据);如果遇到重复数据, //会抛出异常
我认为如果您发布比较线条的方式会有所帮助,我的意思是,如果您正确比较线条的内容而不是指向内存中对象的指针