将int转换为数组中的char,返回内存指针

时间:2015-01-16 00:50:08

标签: java

我正在尝试将2d整数数组转换为2d字符数组,并且当前正在接收内存或未初始化的值:

[I@210ace8d
[I@4c7e9bed
[I@c2f0bd7
[I@64b25680

如何正确转换这些数组?

代码在

之下
public static char[][] findCavities(int[][] map){
    char[][] charMap = new char[map.length][map.length];

    for(int i = 0; i < map.length; i++){

            charMap[i] = map[i].toString().toCharArray();

    }

    return charMap;
}

1 个答案:

答案 0 :(得分:0)

Java阵列的.toString实施已经死了,抱歉。您可以改为Arrays.toString(map[i]),它会返回一个类似"[1, 2, 3]"的字符串。您可以使用.replaceAll("[\\[\\] ]", "")从中删除括号和空格,但这真的很难看:(

如果您使用的是Java 8,则还可以执行Stream.of(map[i]).collect(Collectors.joining(""))。这将返回"123"

缺席的是,有各种各样的库(比如Apache公共文件)可以用来解决标准库中的这个缺陷,或者只是编写自己的代码,遍历数组,然后逐个元素地构建字符串。元素:String s = ""; for(int i: array) s+=i;

但两个(或更多)数字数字呢?您确实意识到,您的方法会将{11, 1, 11}之类的输入转换为char数组{'1', '1', '1', '1', '1'},就像它对{111, 11}{1,1,111}等一样,对吧?在我看来,你所做的并不是你想要做的......