我正在尝试将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;
}
答案 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}
等一样,对吧?在我看来,你所做的并不是你想要做的......