java - 合并排序数组中的 ArrayIndexOutOfBoundsException

标签 java arrays

我有两个数组 nums1 和 nums2,其中元素为 m 和 n。nums1 数组具有大于或等于“m+n”的额外空间......用于添加 nums2 元素。 我首先将 nums2 中的元素添加到 nums1。然后对它进行排序。我收到“ArrayIndexOutOFBoundsException”。

class Solution
{
    public void merge(int[] nums1, int m, int[] nums2, int n)
    {
        int index=nums1.length-1;
        int temp;
        for(int i=nums2.length-1;i>=0;i--)
        {
            nums1[index--]=nums2[i];
        }
        for(int i=0;i<nums1.length;i++)
        {
            for(int j=i+1;j<nums1.length;j++)
            {
                if(nums1[i]>nums1[j])
                {
                    temp=nums1[i];
                    nums1[i]=nums1[j];
                    nums1[j]=temp;
                }
            }
        }
        for(int j=0;j<nums1.length;j++)
        {
       System.out.print(nums2[j]+" ");
        }
    }
}

最佳答案

与您的 for 语句相关的问题

for (int i = nums2.length -1; i >= 0; i--){
    nums1[index--] = nums2[i];// if nums2.length longer than nums1 there will be exception 
}

结束,你没有合并它,而是将 nums2 写在 nums1 上 如果您确定 nums1 有足够的大小,则必须将 i 添加到索引;

for (int i = nums2.length -1; i >= 0; i--){
    nums1[index +i] = nums2[i];
}

关于java - 合并排序数组中的 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60802292/

相关文章:

java - 数组 : if (data[a]. 的增强循环包含 ("word")) 问题:类型不兼容

javascript - 如何根据条件向数组添加项目

java - 如何编写一个测试友好的不可变值类?

java - ExpandableListView 不调用 getGroupView 也不填充

javascript - 字符串化数组是一个好习惯吗?

Javascript拼接不拼接

javascript - 数组包括

java - JButton setIcon 更新错误

java - 相对路径的 File.createNewFile() 在更改 "user.dir"-Property 后使用错误的目录

java - 如何更改父类(super class)方法的参数?