我有以下文本文件:
1 ---------------------------------------------------
int int0 = (-2586);
int int1 = 3580;
int int2 = 2315;
int int3 = (-1974);
2 ---------------------------------------------------
int int0 = (-2586);
int int1 = 3580;
int int2 = 2315;
int int3 = (-1974);
3 ---------------------------------------------------
int int0 = (2586);
int int1 = 3580;
int int2 = 2315;
int int3 = (-1974);
我想将每个集合的整数值(在示例中为3个集合)存储在一个列表中,并将所有列表存储在一个列表中。为此:
BufferedReader reader;
ArrayList<List<Integer>> list = new ArrayList<List<Integer>>();
List<Integer> objSuite = new ArrayList<Integer>();
try {
reader = new BufferedReader(new FileReader("file1.txt"));
String line = reader.readLine();
while (line != null) {
if(line.contains("------")) {
list.add(objSuite);
objSuite = new ArrayList<Integer>();
}
if(line.contains("int int")) {
Pattern p = Pattern.compile(".*?(-?\\d+)\\D*$");
Matcher m = p.matcher(line);
if (m.matches()) {
objSuite.add(Integer.parseInt(m.group(1)));
}
}
line = reader.readLine();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
运行此代码时,我得到以下结果:
[]
[-2586, 3580, 2315, -1974]
[-2586, 3580, 2315, -1974]
我期望的是以下结果:
[-2586, 3580, 2315, -1974]
[-2586, 3580, 2315, -1974]
[2568, 3580, 2315, -1974]
当前实现不包括第三组的值。你知道如何解决这个问题吗?
答案 0 :(得分:1)
您似乎在循环开始时将其添加到列表中。
在循环结束后添加一个list.add(objSuite);
,或考虑将其移入函数中,以避免输入空对象作为数组的第一个元素。