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

二维字符数组初始化问题:如何正确设置char[0][0]为空格?

解决10×10二维char数组[0][0]位置的初始化问题

问题原因

你的代码中,第二次循环为行列标赋值时,当i=0会执行board[0][0] = K.charAt(0)(即把'0'赋值给该位置),覆盖了之前初始化的空格,导致[0][0]显示为'0'而非空格。

解决方案1:跳过i=0的赋值(推荐)

直接从i=1开始为第一行和第一列的非[0][0]位置赋值,保留[0][0]的空格初始化状态:

final int SIZE = 10;
char[][] board = new char[SIZE][SIZE];

// 初始化所有位置为空格
for (int i = 0; i < SIZE; i++) {
    for (int j = 0; j < SIZE; j++) {
        board[i][j] = ' ';
    }
}

// 从i=1开始赋值行列标识,跳过[0][0]
for (int i = 1; i < SIZE; i++) {
    char numChar = (char) ('0' + i); // 直接转换为字符,无需转String
    board[0][i] = numChar;
    board[i][0] = numChar;
}

// 打印数组
for (int i = 0; i < SIZE; i++) {
    for (int j = 0; j < SIZE; j++) {
        System.out.print(board[i][j]);
    }
    System.out.println();
}

解决方案2:循环后单独修正[0][0]

如果需要保留原循环结构,在循环结束后单独将[0][0]重新设为空格:

final int SIZE = 10;
char[][] board = new char[SIZE][SIZE];

// 初始化所有位置为空格
for (int i = 0; i < SIZE; i++) {
    for (int j = 0; j < SIZE; j++) {
        board[i][j] = ' ';
    }
}

// 原循环赋值行列标识
for (int i = 0; i < SIZE; i++) {
    String K = Integer.toString(i);
    board[0][i] = K.charAt(0);
    board[i][0] = board[0][i];
}

// 单独修正[0][0]为空格
board[0][0] = ' ';

// 打印数组
for (int i = 0; i < SIZE; i++) {
    for (int j = 0; j < SIZE; j++) {
        System.out.print(board[i][j]);
    }
    System.out.println();
}

优化说明

方案1中用(char)('0' + i)直接将整数转换为对应字符,比通过Integer.toString(i)再取字符的方式更高效,减少了字符串对象的创建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:06:25