【发布时间】:2020-08-01 07:25:45
【问题描述】:
我正在尝试在 java 中合并 2 个升序排序数组。我是java新手,所以我无法理解。下面的代码有什么问题?
import java.lang.Math;
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
int[] a = {10, 20, 30, 40};
int[] b = {50, 60, 70, 80};
int[] z = merge(a, b);
System.out.println(z);
}
public static int[] merge(int[] a, int[] b) {
int[] result = new int[a.length + b.length];
int indexResult = 0;
int indexA = 0;
int indexB = 0;
while (indexResult < result.length) {
if (indexB >= a.length || a[indexA] <= b[indexB])
result[indexResult++] = b[indexB++];
else
result[indexResult++] = a[indexA++];
}
return result;
}
}
我的错误是
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Main.merge(Main.java:30)
at Main.main(Main.java:15)
【问题讨论】:
-
indexB >= a.length应该替换为indexA >= a.length这就是ArrayIndexOutOfBoundsException的原因 -
这个问题启发我特别询问 Java Streams 是否可以完成这项工作。事实上,它可以用流来完成。请参阅:Using Java streams to merge a pair of
intarrays。