写一个方法
public static ArrayList merge(ArrayList a, ArrayList b)
合并两个数组列表,交替使用两个数组列表中的元素。如果一个数组列表比另一个更短,则只要可以替换,然后追加较长数组列表中的其余元素。例如,如果a是
1 4 9 16
和b
是
9 7 4 9 11
然后merge返回数组列表
1 9 4 7 9 4 16 9 11
我尝试做的是使用if语句编写for循环,以便当i是偶数(i%2 == 0)时从数组列表a向数组列表添加数字,从数组列表b开始我是一个奇数。然而,我不知道如何处理一个数组列表可能比另一个更长的事实。有人可以帮帮我吗?这是我目前的代码
package test;
import java.util.Scanner;
public class Arraybig {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int m = scan.nextInt();
int n = scan.nextInt();
int[] A = new int[m];
for (int k = 0; k < m; k++) {
A[k] = scan.nextInt();
}
int[] B = new int[n];
for (int k = 0; k < n; k++) {
B[k] = scan.nextInt();
}
int[] C = new int[m + n];
int max = Math.max(m, n);
int a = 0, b = 0;
for (int i = 0; i < m+n; i++) {
if (i % 2 == 0 && a < A.length) {
C[i] = A[a];
a++;
} else if (i % 2 != 0 && b < B.length) {
C[i] = B[b];
b++;
} else if (a < A.length) {
C[i] = A[a];
a++;
} else {
C[i] = B[b];
b++;
}
}
for (int j = 0; j < C.length; j++) {
System.out.println(C[j] + " ");
}
}
}
答案 0 :(得分:1)
更清洁的方法可能是这样的......
list<Integer> a1=//1st list
list<Integer> a2=//2nd list
list<Integer> a3=new Arraylist<Integer>();
int length=(a1.size()<=a2.size())?a1.size():a2.size();
for(int i=0;i<length;i++){
a3.add(a1.get(i));
a3.add(a2.get(i));
}
for(int i=length;i<a1.size();i++){
a3.add(a1.get(i));
}
for(int i=length;i<a2.size();i++){
a3.add(a2.get(i));
}
答案 1 :(得分:0)
提示:要填充的数组有多长?您的主for
循环运行了多少次迭代?为什么它不是同一个数字?