如果我给出了一个带有未知参数的2D数组,我必须将这些行组合在一起以创建一个带有这些值的字符串,例如:
2 3 4 1
8 1 1 2
returns
[2341, 8112]
如何将2D数组转换为1D数组并将其设置为String? 这就是我到目前为止所做的:
public static String[] stichEachRow(int[][] matrix)
{
int[] answer = new int[1];
for (int r = 0; r < matrix.length; r++)
{
for (int c = 0; c < matrix[0].length; c++)
{
answer = "[" + matrix[r][c] + ", ";
}
}
return answer + "]";
}
我得到错误,说我无法从String转换为int []
答案 0 :(得分:0)
试试这个:
String[] sarr = new String[matrix.length];
for (int n = 0; n < matrix.length; n++) {
int[] arr = matrix[n];
StringBuilder sb = new StringBuilder();
for (int i : arr) {
sb.append(i);
}
sarr[n] = sb.toString();
}
return sarr;
答案 1 :(得分:0)
这可以通过
使用Stream
轻松完成
Stream<Integer> str = Arrays.stream(arr)
.map(a -> IntStream.of(a)
.reduce(0, (r,v)-> r*10 + v));
int[] res = str.mapToInt(i->i).toArray();
我们的想法是将2d数组中的每个int[]
缩减为一个数字,然后将其从流转换为int[]
。
您的实施中的问题是您声明int[] answer
,然后尝试在其中存储String
。
答案 2 :(得分:0)
数学方法 - 不涉及字符串操作
// Our initial array
int[][] arr = {{4,1,8,4},{1,2,3,4}};
// Array to store results
int[] result = new int[arr.length];
// Iterate through array
for (int i = 0; i < arr.length; i++){
// Determine multiplier for first number
double multiplier = Math.pow(10, arr[i].length-1);
// Iteratate through 2d array
for (int j : arr[i]){
// add the result of the multiplier times the number in array of interest
result[i] += (j * multiplier);
// divide the multiplier by 10
multiplier = multiplier / 10;
}
}
希望这有帮助!