所以我完成了整个事情,我在运行它时编译了它,并说了一个错误: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));
    }
}

最佳答案

两个错误。

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]);
        }

关于java - 我的Java项目中出现错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26921976/

10-12 00:11
查看更多