题目1:
有多组整数数组,需要将他们合并成一个新的数组。合并规则:从每个数组里按顺序取出固定长度的内容合并到新的数组中,取完的内容会删除掉,如果该行不足固定长度或者为空。则直接取出剩余内容放到新的数组中,继续下一行。
输入:第一行是每次读取的固定长度,第2-n行是需要合并的数组,不同的数组用回车换行分隔,数组内用逗号分隔。
输出:新的数组,用逗号分隔
示例:
输入:
3
2,5,6,7
1,7,4
输出:
2,5,6,1,7,4,7
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
ArrayList<String> allString = new ArrayList<>();
int allLength = 0;
Map<Integer,String[]> stringMap = new HashMap();
//todo
Scanner sc = new Scanner(System.in);
Integer num = sc.nextInt();
int lineNum = 0;
/*
在nextInt()获取第一行数字后,光标停留在有效整数后面,
nextLine()会读取当前光标到换行符,并将光标移动到下一行的开始位置
这里会多读一行空字符.
*/
sc.nextLine();
while(sc.hasNextLine()){
String line = sc.nextLine();
String[] lineStringArray = line.split(",");
stringMap.put(lineNum,lineStringArray);
allLength = allLength + lineStringArray.length;
lineNum++;
}
int loop = 1;
while (allString.size() < allLength) {
for (int i = 0; i < lineNum; i++) {
String[] nowStringArray = stringMap.get(i);
if (nowStringArray.length >= num * loop) {
for (int j = (loop - 1) * num; j < num * loop; j++) {
allString.add(nowStringArray[j]);
}
}
if (nowStringArray.length < num * loop && nowStringArray.length > num * (loop - 1)) {
for (int j = (loop - 1) * num; j < nowStringArray.length; j++) {
allString.add(nowStringArray[j]);
}
}
}
loop++;
}
String result = "";
for (int index = 0; index< allString.size(); index++){
if (index != allString.size() -1){
result = result + allString.get(index) + ",";
}
else result = result + allString.get(index);
}
System.out.println(result);
}
}
如果你觉得文章不错 ,也麻烦扫码领红包支持一下。或者打开支付宝首页搜“529823781”领红包,领到红包,早点使用哟。也算是对我的一点点支持了。