Java中如何将List列表按3×3数组格式打印输出?
实现思路
- 你的集合固定包含9个字符元素,刚好匹配3行3列的输出要求,每行放置3个元素即可
- 同一行内的元素用空格分隔,每打印完3个元素就换行;前两行打印完成后额外输出一个空行,最后一行打印完不需要追加空行,避免末尾出现多余空白
- 可以通过下标遍历判断位置,也可以直接按每3个元素为一组切分子列表逐行处理,两种方式都能实现效果
基础实现代码(下标遍历版)
import java.util.Arrays; import java.util.List; public class PrintBoard { public static void main(String[] args) { List<Character> Board = Arrays.asList('1', '2', '3', '4', '5', '6', '7', '8', '9'); for (int i = 0; i < Board.size(); i++) { System.out.print(Board.get(i)); // 每3个元素为一行的末尾 if ((i + 1) % 3 == 0) { System.out.println(); // 不是最后一行的话,多输出一个空行做分隔 if (i != Board.size() - 1) { System.out.println(); } } else { // 行内元素用空格分隔 System.out.print(" "); } } } }
更易维护的切片实现版
如果后续需要调整棋盘尺寸(比如改成4x4),用按行切片的写法改起来更方便,不需要调整模运算判断逻辑:
import java.util.Arrays; import java.util.List; public class PrintBoard { public static void main(String[] args) { List<Character> Board = Arrays.asList('1', '2', '3', '4', '5', '6', '7', '8', '9'); int colNum = 3; // 每行3个元素 for (int rowStart = 0; rowStart < Board.size(); rowStart += colNum) { // 切出当前行的所有元素 List<Character> currentRow = Board.subList(rowStart, rowStart + colNum); // 拼接行内容 StringBuilder lineBuilder = new StringBuilder(); for (int j = 0; j < currentRow.size(); j++) { lineBuilder.append(currentRow.get(j)); if (j != currentRow.size() - 1) { lineBuilder.append(" "); } } System.out.println(lineBuilder); // 非最后一行则输出空行分隔 if (rowStart + colNum != Board.size()) { System.out.println(); } } } }
运行输出结果
两个版本的代码运行后都会输出你需要的格式:
1 2 3 4 5 6 7 8 9
内容的提问来源于stack exchange,提问作者AK105
相关产品推荐
相关产品推荐

