在 Java 中打印 2D ArrayList 会导致空括号
Printing a 2D ArrayList in Java results in empty brackets
我正在尝试读取一个文件并将每 2 行放入字符串的 ArrayList 中。我的程序有一个从 1 开始并跟踪行的计数器,如果它在第 2 行,它将执行以下操作:
- 将名为 line 的字符串 ArrayList 添加到名为 list2D
的二维 ArrayList
- 使用
.clear()
清除行
- 将行计数器重置为 1
所以想法是将每 2 行文本存储为字符串的二维 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]]
但是,当我使用 w.println(list2D)
打印 2D ArrayList 时,程序输出空值:
[ [ ], [ ] ]
这是我的代码:
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);
我已经检查了 other SO 关于如何创建 2D ArrayList 的帖子,所以我很确定我从 for 循环中得到了正确的一切。当我在将 lines
ArrayList 添加到 lines2D
之前测试打印它时,它会打印出所需的结果(例如 [cat, dog]),所以至少在那之前我是正确的。
我也不确定 w.println(list2D)
是否是正确的打印方法,但我又看到了多个使用此方法的其他 SO 帖子。
任何 help/criticism 不胜感激,谢谢。
the program outputs emptiness: [ [ ], [ ] ]
那是因为你只有一个 ArrayList。
您多次将那个 ArrayList 的引用添加到 2D ArrayList,但是 ArrayList 中没有数据,因为您添加了两个条目,然后您清除了这些条目。
您需要为每两行文本创建一个新的 ArrayList。
不需要“lineNum”变量。
您只需将一行文本添加到 ArrayList。当 ArrayList 的大小为 2 时,将其添加到 2D ArrayList 并为接下来的 2 行文本创建一个新的空 ArrayList。
我正在尝试读取一个文件并将每 2 行放入字符串的 ArrayList 中。我的程序有一个从 1 开始并跟踪行的计数器,如果它在第 2 行,它将执行以下操作:
- 将名为 line 的字符串 ArrayList 添加到名为 list2D 的二维 ArrayList
- 使用
.clear()
清除行
- 将行计数器重置为 1
所以想法是将每 2 行文本存储为字符串的二维 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]]
但是,当我使用 w.println(list2D)
打印 2D ArrayList 时,程序输出空值:
[ [ ], [ ] ]
这是我的代码:
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);
我已经检查了 other SO 关于如何创建 2D ArrayList 的帖子,所以我很确定我从 for 循环中得到了正确的一切。当我在将 lines
ArrayList 添加到 lines2D
之前测试打印它时,它会打印出所需的结果(例如 [cat, dog]),所以至少在那之前我是正确的。
我也不确定 w.println(list2D)
是否是正确的打印方法,但我又看到了多个使用此方法的其他 SO 帖子。
任何 help/criticism 不胜感激,谢谢。
the program outputs emptiness: [ [ ], [ ] ]
那是因为你只有一个 ArrayList。
您多次将那个 ArrayList 的引用添加到 2D ArrayList,但是 ArrayList 中没有数据,因为您添加了两个条目,然后您清除了这些条目。
您需要为每两行文本创建一个新的 ArrayList。
不需要“lineNum”变量。
您只需将一行文本添加到 ArrayList。当 ArrayList 的大小为 2 时,将其添加到 2D ArrayList 并为接下来的 2 行文本创建一个新的空 ArrayList。