Java生成打印10x10对称*二维数组时输出为两行的问题求助
问题修复方案
原代码存在的错误
- 内层循环仅遍历
j < i的下三角区域,既没有处理i = j的对角线位置,还把打印逻辑直接塞在内层赋值循环里,每赋值一次就换行,完全打乱了表格的行结构,是输出变成乱串的核心原因 - 声明了
Random类对象rd但完全未使用,属于冗余代码 - 打印逻辑和赋值逻辑耦合,没有先完成整个对称矩阵的填充就边赋值边打印,导致输出顺序完全混乱
修复后可运行代码
import java.util.Random; public class Main { public static void main(String[] args) { int n = 10; char[][] array = new char[n][n]; Random rd = new Random(); // 先填充对称矩阵 for (int i = 0; i < n; i++) { // 处理对角线位置 array[i][i] = rd.nextDouble() > 0.5 ? '*' : ' '; // 对称填充上下三角区域 for (int j = 0; j < i; j++) { char value = rd.nextDouble() > 0.5 ? '*' : ' '; array[i][j] = value; array[j][i] = value; } } // 按行统一打印矩阵 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.print(array[i][j] + " "); } // 整行打印完成后再换行 System.out.println(); } } }
修复说明
- 拆分填充逻辑和打印逻辑,先完成整个10x10对称矩阵的赋值,再统一逐行输出,保证表格结构正确
- 补充了对角线位置的赋值逻辑,保证矩阵所有位置都有值
- 把嵌套在赋值循环里的错误打印逻辑移到单独的输出循环中,避免乱换行问题
- 清理冗余声明,统一使用已创建的
Random对象生成随机数
内容的提问来源于stack exchange,提问作者nllatimo
相关产品推荐
相关产品推荐

