在我的java项目中有错误

时间:2014-11-14 02:31:22

标签: java

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

3 个答案:

答案 0 :(得分:1)

两个错误。

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

答案 1 :(得分:0)

在你的while循环中

while(i < a1.length && 1 < a2.length)

“1”应为“i”

答案 2 :(得分:0)

你的一个问题就在这里

for(int k = 0; k < a2.length; k++)
{
    System.out.print(a1[k]);
}

您正在遍历a1,但您的索引的长度为a2