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行,是需要合并的数组,不同的数组用回车换行分隔,数组内部逗号分隔。 展开
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行,是需要合并的数组,不同的数组用回车换行分隔,数组内部逗号分隔。 展开
2个回答
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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();
}
}
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();
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询