一道java数组习题求助!!!!
将左边的二维数组通过一个函数转成右边的一维函数每个数组前多了一个元素就是它的length搞了半天写不出求大神帮忙~~~...
将左边的二维数组通过一个函数 转成 右边的一维函数 每个数组前多了一个元素 就是它的length
搞了半天 写不出 求大神帮忙~~~ 展开
搞了半天 写不出 求大神帮忙~~~ 展开
3个回答
展开全部
先算出长度,再填。
import java.util.Arrays;
public class Test{
public static void main(String[] args){
int a[][]={
{17,23,1,5},
{8,9},
{34,35,56}
};
int b[]=new int[a.length+a[0].length+a[1].length+a[2].length];
int offset=0;
for(int e[]:a){
b[offset++]=e.length;
System.arraycopy(e, 0, b, offset, e.length);
offset+=e.length;
}
System.out.println(Arrays.toString(b));
}
}
=====
[4, 17, 23, 1, 5, 2, 8, 9, 3, 34, 35, 56]
import java.util.Arrays;
public class Test{
public static void main(String[] args){
int a[][]={
{17,23,1,5},
{8,9},
{34,35,56}
};
int b[]=new int[a.length+a[0].length+a[1].length+a[2].length];
int offset=0;
for(int e[]:a){
b[offset++]=e.length;
System.arraycopy(e, 0, b, offset, e.length);
offset+=e.length;
}
System.out.println(Arrays.toString(b));
}
}
=====
[4, 17, 23, 1, 5, 2, 8, 9, 3, 34, 35, 56]
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class Demo {
public static void main(String[] args) {
int srcArray[][]={{17,23,1,5},{8,9},{34,35,56},{1}};// 源数组
int aLength = srcArray.length;// 源数组的第一维度,需要通过第一维来计算第二维长度
int bLength = 0;// 目标数组的长度
for (int i = 0; i < aLength; i++) {
bLength = bLength + srcArray[i].length + 1;// 目标数组的长度=源数组的每一维长度 + 1
}
int targetArray[] = new int[bLength];// 根据长度来初始化目标数组
int offset = 0;
for (int i = 0; i < aLength; i++) {
int aaLength = srcArray[i].length;
targetArray[offset++] = aaLength;// 每一次都首先将源数组长度优先放入目标数组中
for (int j = 0; j < aaLength; j++){
targetArray[offset++] = srcArray[i][j];// 依次找出源数组的每个元素,放入目标数组中
}
}
for (int res : targetArray) {
System.out.println (res);// 打印结果
}
}
}
public static void main(String[] args) {
int srcArray[][]={{17,23,1,5},{8,9},{34,35,56},{1}};// 源数组
int aLength = srcArray.length;// 源数组的第一维度,需要通过第一维来计算第二维长度
int bLength = 0;// 目标数组的长度
for (int i = 0; i < aLength; i++) {
bLength = bLength + srcArray[i].length + 1;// 目标数组的长度=源数组的每一维长度 + 1
}
int targetArray[] = new int[bLength];// 根据长度来初始化目标数组
int offset = 0;
for (int i = 0; i < aLength; i++) {
int aaLength = srcArray[i].length;
targetArray[offset++] = aaLength;// 每一次都首先将源数组长度优先放入目标数组中
for (int j = 0; j < aaLength; j++){
targetArray[offset++] = srcArray[i][j];// 依次找出源数组的每个元素,放入目标数组中
}
}
for (int res : targetArray) {
System.out.println (res);// 打印结果
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class ArrayTest{
public static void main(String args[]){
int [][]rs = {{17,23,1,5},{8,9},{34,35,56}};
ArrayTest test = new ArrayTest();
int []res = test.conv(rs);
for(int i = 0; i < res.length; i++){
System.out.print("" + res[i] + " , ");
}
}
public int [] conv(int [][] arr){
int row = arr.length;
int cols = 0;
for(int i = 0; i < row ; i++){ cols++;
for(int j = 0 ; j < arr[i].length; j++){
cols++;
}
}
int [] res = new int[cols];
int s = 0;
for(int i = 0; i < row ; i++){
res[s] = arr[i].length;
s++;
for(int j = 0 ; j < arr[i].length && s < cols; j++){
res[s] = arr[i][j];
s++;
}
} return res;
}
}
public static void main(String args[]){
int [][]rs = {{17,23,1,5},{8,9},{34,35,56}};
ArrayTest test = new ArrayTest();
int []res = test.conv(rs);
for(int i = 0; i < res.length; i++){
System.out.print("" + res[i] + " , ");
}
}
public int [] conv(int [][] arr){
int row = arr.length;
int cols = 0;
for(int i = 0; i < row ; i++){ cols++;
for(int j = 0 ; j < arr[i].length; j++){
cols++;
}
}
int [] res = new int[cols];
int s = 0;
for(int i = 0; i < row ; i++){
res[s] = arr[i].length;
s++;
for(int j = 0 ; j < arr[i].length && s < cols; j++){
res[s] = arr[i][j];
s++;
}
} return res;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询