java - 为什么我得到 - ArrayIndexOutOfBoundsException : 5?

标签 java arrays loops indexoutofboundsexception

我有两个已排序的数组。我需要将它们连接到一个新的排序数组中:

    int[] arr1 = {1,2,3,6,8};
    int[] arr2 = {4,5,9,12,208,234};
    printArr(allSort(arr2,arr1));
}

public static int[] allSort(int[] arr, int[] arr3) {

    int[] newArr = new int[arr.length + arr3.length];

    int j = 0;
    int k = 0;

    for (int i = 0; i < newArr.length - 1; i++) {
        if(j == arr3.length){
            newArr[i] = arr[k];
            k++;
        }
        if(k == arr.length){
            newArr[i] = arr3[j];
            j++;
        }
        if(arr[k] > arr3[j]){
            newArr[i] = arr3[j];
            j++;
        } else if (arr[k] < arr3[j]) {
            newArr[i] = arr[k];
            k++;
        }
    }
    return newArr;
}

我尝试构建一个长度等于两个数组长度之和的数组,然后对其运行循环。

但是,此代码返回错误:AArrayIndexOutOfBoundsException: 5 .

最佳答案

只需在两个 if 条件中添加 continue 即可,如下所示,

if(j == arr3.length){
  newArr[i] = arr[k];
  k++;
  continue;
}
if(k == arr.length){
  newArr[i] = arr3[j];
  j++;
  continue;
}

无论如何,这里另一个循环已完成,这就是我们迭代并添加所有值的原因,这样就不需要检查所有其他条件,因此我们可以跳过它。

另外,

for (int i = 0; **i < newArr.length**; i++)

因为您正在检查“<”。

关于java - 为什么我得到 - ArrayIndexOutOfBoundsException : 5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56821788/

相关文章:

java - 在 Android 中启动新 Activity 时等待很长时间

java - Java 中的 Hazelcast Sql 查询

javascript - 使用 Javascript 更改具有特定 ID 的所有 URL

python - 循环的 Python 范围的 C 等效项

css - 在lesscss中用奇数循环

c++ - 在 C++ 中使用 std::cin 将 char 传递给 int

java - 单元测试验证从匿名类中的回调返回的对象

java - 具有可变数量 @XMLElements 的 JAXB

python - 选择 n 列的每个交替组 - NumPy

c++ - 访问 3 索引数组的最快方法