我正在尝试合并两个排序的数组,即检查Sub calculate
Dim startdate As Date
Dim loopdate As Date
Dim i As Integer
Dim currentdate As Date
Dim datearray() As Date
currentdate = Date
If currentdate = "20/12/2018" Then
startdate = currentdate + CDate("00:00")
currentdate = currentdate + CDate("07:29")
Else
startdate = DateAdd("d", -1, currentdate) + CDate("07:30")
currentdate = currentdate + CDate("07:29")
End If
For loopdate = startdate To currentdate
If loopdate <= currentdate Then
ReDim Preserve datearray(0 To i)
datearray(i) = DateValue(loopdate)
i = i + 1
End If
Next
End Sub
小于A[i]
然后创建一个数组B[j]
来存储合并数组的新数组,但是我的问题是是我收到C[k]
时该如何解决此错误:
最后两个for循环用于检查我们是否已完成对A和B的比较,是否还有一些元素将它们移至C。在这里,我假设A和B已排序。 m和n是数组的大小。
任何帮助将不胜感激,下面的代码:
公共类MergeArrays {
java.lang.ArrayIndexOutOfBoundsException:
}
答案 0 :(得分:0)
在进入for循环之前,您无需重置计数器。
edit:例如,您还正在检查当前计数器是否小于或等于5,这将使索引超出范围错误,因为数组从索引0开始。但是,您也尝试在其中增加索引您的方括号“ A [i ++]”也将超过索引限制。
edit2:您的“ C []”也以[1]的大小首写,这意味着它具有以下索引:{0,1}。您将“ k”计数器设置为1,但是一旦到达“ C []”数组中的索引,就将k递增:“ C [k ++]”,现在您尝试达到的索引2不会存在。重写您的代码。我建议您使用内部计数器,仅使用your_array_name.length()即可获取数组长度。例如。 for(int i = 0; i
答案 1 :(得分:0)
int C [] = new int [8];
请在上面的行中提供适当的数组长度。您要提供的数组长度为1,而k ++ / i ++的值超过1,因此它给出了ArrayIndexOutOfBoundsException。
答案 2 :(得分:0)
您正在做一些错误,我会指出,以便您可以解决它。
答案 3 :(得分:0)
您可以创建这样的课程
public static void main(String[] args) {
// TODO Auto-generated method stub
//given two arrays merge them
int a[] = {2, 8, 15, 18, 19, 20};
int b[] = {5, 9, 12, 17};
System.out.println(Arrays.toString(mergeArrays(a, b, a.length, b.length)));
}
private static int[] mergeArrays(int[] A, int[] B, int m, int n) {
int[] C = null;
if (m > n) {
C = A;
for (int i = 0; i < n; i++) {
if (A[i] < B[i]) {
C[i] = B[i];
}
}
} else {
C = B;
for (int i = 0; i < n; i++) {
if (A[i] > B[i]) {
C[i] = A[i];
}
}
}
return C;
}