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

如何在不修改char[][]返回类型的wrap方法下正确输出二维字符数组?

解决Java二维char数组打印哈希值的问题

问题原因

直接打印char[][]时,Java会调用Object类的默认toString()方法,输出格式为[[C@哈希值——这是数组的默认标识,而非实际存储的内容。

解决方法(不修改wrap方法返回类型)

方法1:使用Arrays.deepToString()

Java的java.util.Arrays类提供了deepToString()方法,专门处理多维数组的内容打印,会递归解析每一层数组元素。

修改后的完整代码:

import java.util.Arrays;

public class Probe {

    private static char[][] wrap(String message) {
        char[] chars = message.toCharArray();
        char[][] charArray = new char[4][7];
        int index = 0;

        for (int zeilenIndex = 0; zeilenIndex < charArray.length; zeilenIndex++) {
            for (int spaltenIndex = 0; spaltenIndex < charArray[zeilenIndex].length; spaltenIndex++) {
                charArray[zeilenIndex][spaltenIndex] =  chars[index];
                index++;
            }
        }
        return charArray;
    }

    public static void main(String[] args) {
        String text = "WIR GREIFEN MORGEN MITTAG AN";
        char[][] chars = wrap(text);
        // 替换原打印语句
        System.out.println(Arrays.deepToString(chars));
    }
}

输出示例:

[[W, I, R,  , G, R, E], [I, F, E, N,  , M, O], [R, G, E, N,  , M, I], [T, T, A, G,  , A, N]]

方法2:手动遍历数组自定义输出格式

如果需要更直观的排版(比如每行打印一组字符),可以手动遍历二维数组,将每个一维char[]转为字符串输出:

修改后的完整代码:

public class Probe {

    private static char[][] wrap(String message) {
        char[] chars = message.toCharArray();
        char[][] charArray = new char[4][7];
        int index = 0;

        for (int zeilenIndex = 0; zeilenIndex < charArray.length; zeilenIndex++) {
            for (int spaltenIndex = 0; spaltenIndex < charArray[zeilenIndex].length; spaltenIndex++) {
                charArray[zeilenIndex][spaltenIndex] =  chars[index];
                index++;
            }
        }
        return charArray;
    }

    public static void main(String[] args) {
        String text = "WIR GREIFEN MORGEN MITTAG AN";
        char[][] chars = wrap(text);
        // 遍历每行并转为字符串打印
        for (char[] row : chars) {
            System.out.println(new String(row));
        }
    }
}

输出示例:

WIR GRE
IFEN MO
RGEN MI
TTAG AN

额外提示

你的wrap方法依赖输入字符串长度恰好为4*7=28,如果输入长度不符会触发ArrayIndexOutOfBoundsException,可以添加长度校验逻辑避免异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:02:35