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

如何修正二维char数组打印格式,实现桌游棋盘目标输出?

问题:消除棋盘输出的异常符号,匹配目标样式

我正在开发一款桌游,需要打印出如下目标样式的3x3二维char数组棋盘:

H _ _ 
_ _ _ 
_ _ G 

但我的代码输出出现了异常符号,当前输出样式如下:

H � _ 
_ _ _ 
_ _ G 

请问如何修改代码消除异常符号,使输出符合预期样式?以下是我的实现代码:

private char[][] boardMatrix;

public TryingSth() {
    boardMatrix = new char[3][3];
//        boardMatrix[0][0] = 'H';

    for (int i = 0; i < boardMatrix.length; i++) {
        for (int j = 0; j < boardMatrix.length; j++) {
            if (i==0 && j==0){
                System.out.print('H');
            } else if (i ==2 && j==2){
                System.out.print('G');
            }else
            boardMatrix[i][j] = '_';
            System.out.print(boardMatrix[i][j] + " ");
        }
        System.out.println();
    }
}

问题原因

  1. Java中未赋值的char数组元素默认是'\u0000'(空字符),打印时会显示异常符号
  2. if-else结构缺少大括号,导致else仅执行boardMatrix[i][j] = '_';,而System.out.print(boardMatrix[i][j] + " ");会无条件执行——左上角和右下角的数组位置未被赋值,打印时输出了默认的空字符,同时原代码提前打印的'H'/'G'和后续的数组元素打印重复,导致格式混乱

修复方案1(逻辑清晰版)

先统一初始化所有棋盘元素,再设置特殊位置,最后统一打印:

private char[][] boardMatrix;

public TryingSth() {
    boardMatrix = new char[3][3];
    // 先给所有位置初始化'_',避免空字符
    for (int i = 0; i < boardMatrix.length; i++) {
        for (int j = 0; j < boardMatrix[i].length; j++) {
            boardMatrix[i][j] = '_';
        }
    }
    // 设置特殊位置
    boardMatrix[0][0] = 'H';
    boardMatrix[2][2] = 'G';
    
    // 统一打印棋盘
    for (int i = 0; i < boardMatrix.length; i++) {
        for (int j = 0; j < boardMatrix[i].length; j++) {
            System.out.print(boardMatrix[i][j] + " ");
        }
        System.out.println();
    }
}

修复方案2(原循环修正版)

给if-else加上大括号,确保逻辑分支完整,直接给数组赋值后再打印:

private char[][] boardMatrix;

public TryingSth() {
    boardMatrix = new char[3][3];

    for (int i = 0; i < boardMatrix.length; i++) {
        for (int j = 0; j < boardMatrix.length; j++) {
            if (i == 0 && j == 0) {
                boardMatrix[i][j] = 'H';
            } else if (i == 2 && j == 2) {
                boardMatrix[i][j] = 'G';
            } else {
                boardMatrix[i][j] = '_';
            }
            System.out.print(boardMatrix[i][j] + " ");
        }
        System.out.println();
    }
}

内容的提问来源于stack exchange,提问作者Tea Bici

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:05:15