You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:06:03