所以即时完成整个事情,我编译它,当我运行它有一个错误说:arrayindexexception我尝试寻找我的错误,我找不到所以我需要有人看看他们是否可以帮助我
public class Merging
{
public static int[] merge(int[] arrA, int[] arrB)
{
int[] sum = new int[arrA.length + arrB.length];
int i = 0, j = 0, k = 0;
while ( i < arrA.length && j < arrB.length)
{
if(arrA[i] < arrB[j])
{
sum[k] = arrA[i];
i++;
k++;
}else
sum[k] = arrB[i];
j++;
k++;
}
return sum;
}
public static void main(String[] args)
{
int a = (int)(Math.random() * (50-20+1)+20);
int b = (int)(Math.random() * (50-20+1)+20);
int[] a1 = new int[a];
int[] a2 = new int[b];
int i = 0;
while(i < a1.length && 1 < a2.length)
{
a1[i] = (int) (Math.random() * (150-20+1)+20);
a2[i] = (int) (Math.random() * (150-20+1)+20);
i++;
}
for(int j = 0; j < a1.length; j++)
{
System.out.print(a1[j]);
}
System.out.println();
for(int k = 0; k < a2.length; k++)
{
System.out.print(a1[k]);
}
System.out.println();
System.out.print(merge(a1,a2));
}
}
答案 0 :(得分:1)
两个错误。
1。)从1 < a2.length
更改为i < a2.length
while (i < a1.length && i < a2.length) {
a1[i] = (int) (Math.random() * (150 - 20 + 1) + 20);
a2[i] = (int) (Math.random() * (150 - 20 + 1) + 20);
i++;
}
2。)从System.out.print(a1[k]);
更改为System.out.print(a2[k]);
for (int k = 0 ; k < a2.length ; k++) {
System.out.print(a2[k]);
}
答案 1 :(得分:0)
在你的while循环中
while(i < a1.length && 1 < a2.length)
“1”应为“i”
答案 2 :(得分:0)
你的一个问题就在这里
for(int k = 0; k < a2.length; k++)
{
System.out.print(a1[k]);
}
您正在遍历a1
,但您的索引的长度为a2
。