java,数组拼接,求大神帮忙!

现在有多组整数数组,需要将他们合并成一个新的数组。合并规则:从每个数组里按顺序取出固定长度的内容合并到新的数组中,取完的内容会删除掉,如果该行不足固定长度或者已经为空,则... 现在有多组整数数组,需要将他们合并成一个新的数组。合并规则:从每个数组里按顺序取出固定长度的内容合并到新的数组中,取完的内容会删除掉,如果该行不足固定长度或者已经为空,则直接取出剩余的内容放到新的数组中,继续下一行。例如:获得长度3,先遍历第一行,获得2,5, 6 ;再遍历第二行,获得获得1,7,4;再循环回到第一行,获得7,9,5;再遍历第二行,获得3,4;再回到第一行,获得7,按顺序拼接成最终结果。
3
2,5,6,7,9,5,7
1,7,4,3,4
输出:2,5,6,1,7,4,7,9,5,3,4,7
备注:输入描述:第一行是每次读取的固定长度,长度>0.
第2-n行,是需要合并的数组,不同的数组用回车换行分隔,数组内部逗号分隔。
展开
 我来答
匿名用户
2019-04-03
展开全部
public static void main(String[] args) {
    List list = new LinkedList();
    int size = 3;
    int[] a = {2, 5, 6, 7, 9, 5, 7};
    int[] b = {1, 7, 4, 3, 4};
    list.add(a);
    list.add(b);
    int[] ints = concatArr(list, size);
    StringBuilder rs = new StringBuilder();
    for (int anInt : ints) {
        rs.append(anInt + ",");
    }
    System.out.println(rs.substring(0,rs.length()-1));
}

public static int[] concatArr(List list, Integer size) {
    List rs = new LinkedList();
    int count = list.size();
    int index = 0;
    while (count > 0) {
        for (Object o : list) {
            for (int i = index; i < index + size; i++) {
                try {
                    int[] arr = (int[]) o;
                    rs.add(arr[i]);
                } catch (Exception e) {
                    count--;
                    break;
                }
            }
        }
        index += size;
    }
    int[] rsArr = new int[rs.size()];
    for (int i = 0; i < rs.size(); i++) {
        rsArr[i] = (int) rs.get(i);
    }
    return rsArr;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
microroom
科技发烧友

2019-04-04 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1570万
展开全部
import java.util.*;

public class Test
{
public static void main(String[] args)
{
final String NewLine=System.getProperty("line.separator");
StringBuilder sb=new StringBuilder();
StringBuilder result=new StringBuilder();
Scanner sc=new Scanner(System.in);
String line;
String[] strs;
String[][] strstrs;
int n,j,num=0,s=0,end;

n=sc.nextInt();
sc.skip(NewLine);
//在新行回车结束输入
while(null!=(line=sc.nextLine()) && line.length()>0)
{
sb.append(line+NewLine);
}
strs=sb.toString().split(NewLine);
// System.out.println(strs.length);
strstrs=new String[strs.length][];
for(int i=0;i<strs.length;i++)
{
strstrs[i]=strs[i].split(",");
// System.out.println(strstrs[i].length);
}
while(num<strs.length)
{
for(int i=0;i<strs.length;i++)
{
if(null!=strstrs[i]&&s>=strstrs[i].length)
{
num++;
strstrs[i]=null;
}
if(null!=strstrs[i])
{
end=(s+n)<strstrs[i].length ? (s+n) : strstrs[i].length;
for(j=s;j<end;j++)
{
result.append(strstrs[i][j]);
result.append(",");
}
}
}
s+=n;
}
result.setLength(result.length()-1);
System.out.println(result.toString());
sc.close();
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式