public static void main(String[] args) {
char [][] charArr =
{ {'a','b','c'},
{'d','e','f'},
{'g','h','i'}
};
String [] stringA = charToString(charArr);
for (int i = 0; i < stringA.length; i++)
{
System.out.println(stringA[i]);
}
}
public static String [] charToString(char [][] array)
{
String [] stringArr = new String [array.length];
for (int i = 0; i < array.length; i++)
{
stringArr[i] += "";
for (int j = 0; j < array[i].length; j++)
{
stringArr[i] += array[i][j];
}
}
return stringArr;
目前,我得到的输出是:
nullabc
nulldef
nullghi
我正在尝试将2d数组charArr的每一列连接成一个字符串,并连接到称为stringArr的1d数组的每个元素中。我不确定从哪里来null还是我做错了...
感谢帮助!
答案 0 :(得分:7)
stringArr[i] += "";
此行引起了该问题,相当于
stringArr[i] = stringArr[i]+ "";
您要声明一个空字符串并向其附加一个空字符串,只需将其更改为
stringArr[i] = "";
答案 1 :(得分:1)
此行执行时
String [] stringArr = new String [array.length];
它创建一个数组并使用null初始化数组元素。
因此,当您执行concat(stringArr[i] += ""
)时,它将添加null,然后添加数据。
您需要像这样更改方法-
public static String [] charToString(char [][] array)
{
String [] stringArr = new String [array.length];
for (int i = 0; i < array.length; i++)
{
if(stringArr[i]==null){
stringArr[i]="";
}
stringArr[i] += "";
for (int j = 0; j < array[i].length; j++)
{
stringArr[i] += array[i][j];
}
}
return stringArr;
}
答案 2 :(得分:0)
这可能不是代码的确切解决方法,但是可以利用String
构造函数,该构造函数接受字符数组作为输入。
char [][] charArr = {
{'a','b','c'},
{'d','e','f'},
{'g','h','i'}
};
StringBuilder sb = new StringBuilder();
for (int i=0; i < charArr.length; ++i) {
if (i > 0) sb.append("\n");
sb.append(new String(charArr[i]));
}
System.out.println(sb);
abc
def
ghi
答案 3 :(得分:0)
// < java 8
public static String[] charToString(char[][] arr) {
String[] res = new String[arr.length];
for (int i = 0; i < arr.length; i++)
res[i] = new String(arr[i]);
return res;
}
// >= java 8
public static String[] charToString(char[][] arr) {
return Arrays.stream(arr).map(String::new).toArray(String[]::new);
}
输入:
{
{ 'a', 'b', 'c' },
{ 'd', 'e', 'f' },
{ 'g', 'h', 'i' }
}
输出:
abc
def
ghi
注释:
StringBuilder
; new String(char value[])
而不是使用StringBuilder
构建它。答案 4 :(得分:0)
使用流可以将方法更新为:
private static String [] charToString(char[][] array) {
return Arrays.stream(array) //forms a Stream<char[]> (all your rows)
.map(String::new) // maps the char[] to String forming Stream<String>
.toArray(String[]::new); // converts the stream to array String[]
}
并进一步用作:
char[][] charArr =
{{'a', 'b', 'c'},
{'d', 'e', 'f'},
{'g', 'h', 'i'}
};
Arrays.stream(charToString(charArr)).forEach(System.out::println);
输出
abc def ghi