Java:无法存储文档的每个段落。txt文件。在ArrayList<ArrayList<String>>
主要目标是存储中包含的段落的每一行。txt文件到ArrayList,直到我们偶然发现一个空行(仅包含字符串“”的行)。将段落的全部内容存储到ArrayList后,我们将ArrayList本身存储到ArrayList,该ArrayList存储段落的段落。txt文件
问题是,在loadPages()结束后打印ArrayList的内容后,结果发现只有。txt存储在ArrayList的每个位置。因此,例如,如果“这是最后一段的内容”,那么“这是最后一段的内容”。txt文件,该文件有4个段落,然后在打印ArrayList元素后,我得到结果[[“这是最后一段的内容”],[“这是最后一段的内容”],[“这是最后一段的内容”]。有什么想法吗
import java.io.FileNotFoundException;
导入java。木卫一。文件输入流
导入java。util。列表 导入java。util。ArrayList
导入java。util。扫描仪
公共类Pdf{
private List<List<String>> lineblocks1 = new ArrayList<List<String>>();
private String filePath;
private Scanner inputReader = null;
public Pdf(String filePath) {
this.filePath = filePath;
}
public void loadParagraphs() {
List<String> subLineblocks = new ArrayList<String>();
try {
inputReader = new Scanner(new FileInputStream(filePath));
} catch (FileNotFoundException e) {
System.out.println("Error opening file.");
System.exit(0);
}
while (inputReader.hasNextLine()) {
String line = inputReader.nextLine();
if (!line.equals("")) {
subLineblocks.add(line);
} else {
lineblocks1.add(subLineblocks);
subLineblocks.removeAll(subLineblocks);
}
}
}
public void printParagraphs() {
for (List<String> par : lineblocks1) {
System.out.println(par);
}
}
}
# 1 楼答案
你能试试下面的吗
当一个新的段落开始时,您必须重新初始化子行块,在循环之后,您必须将最后一个段落添加到列表中
# 2 楼答案
将段落添加到
lineblocks1
列表时,需要创建一个新的ArrayList,否则它们将全部添加到单个列表中# 3 楼答案
我可以建议添加一个常量字符串作为段落使用吗。分隔符类似于“#######”并添加到子行块中,然后再移动到下一段。这样就不需要两个列表了