java - 在 Java 中打印 2D ArrayList 会导致空括号
问题描述
我正在尝试读取文件并将每 2 行放入字符串的 ArrayList 中。我的程序有一个从 1 开始并跟踪行的计数器,如果它在第 2 行,它将执行以下操作:
- 将名为line的字符串的 ArrayList 添加到名为list2D的 2D ArrayList
- 使用清除线
.clear()
- 将行计数器重置为 1
所以想法是将每 2 行文本存储为字符串的 2D ArrayList。这是预期的输入文件和预期的输出:
INPUT FILE: cat
dog
mouse
duck (every word is on a different line idk why SO put it on the same line)
OUTPUT: [[cat, dog],[mouse, duck]]
但是,当我使用 打印我的 2D ArrayList 时w.println(list2D)
,程序输出空虚:
[ [ ], [ ] ]
这是我的代码:
ArrayList<ArrayList<String>> list2D = new ArrayList<ArrayList<String>>();
ArrayList<String> lines = new ArrayList<String>();
Integer lineNum = 1;
for (String line = r.readLine(); line != null; line = r.readLine()) {
lines.add(line);
if (lineNum == 2) { //line counter is at the end of block
list2D.add(lines);
lines.clear();
lineNum = 1; //reset line counter
} else {
lineNum++;
}
}
w.println(list2D);
我已经检查了其他关于如何创建 2D ArrayList 的 SO 帖子,所以我很确定我从 for 循环中得到了所有内容。当我lines
在将 ArrayList 添加到之前测试打印 ArrayList 时lines2D
,它会打印所需的结果(例如 [cat, dog]),所以至少在那之前我是正确的。
我也不确定是否w.println(list2D)
是正确的打印方法,但我再次看到使用此方法的多个其他 SO 帖子。
感谢任何帮助/批评,谢谢。
解决方案
程序输出空虚:[ [ ], [ ] ]
那是因为你只有一个 ArrayList。
您多次将该 ArrayList 的引用添加到 2D ArrayList,但 ArrayList 中没有数据,因为您添加了两个条目,然后您清除了条目。
您需要为每两行文本创建一个新的 ArrayList。
不需要“lineNum”变量。
您只需向 ArrayList 添加一行文本。当 ArrayList 的大小为 2 时,将其添加到 2D ArrayList 并为接下来的 2 行文本创建一个新的空 ArrayList。
推荐阅读
- xml - build.imp.xml errors and run.xml
- php - How to use screen with PHP shell_exec or exec
- html - Bootstrap4:为什么另一个行单元格左对齐,尽管 mx-auto 不居中?
- sql-server - Turn off query statistics window every time I run a query
- java - Spring Boot:架构:在玩家之间共享对象
- c - 我不明白为什么有些指针地址是这样的
- c++ - 通过 libmysqlclient 在 MySQL 查询中使用用户定义的变量时出错
- laravel - 找不到合适的服务器:[连接拒绝在 '127.0.0.1:27017' 上调用 ismaster]
- windows - 用于 Haskell 的 Windows IDE
- express - NextJS getInitialProps 被 babel asyncToGenerator 调用了两次