调用方法中的数组超出绑定异常,如何从方法返回整个数组

时间:2016-10-01 19:14:26

标签: java insertion-sort

此程序是基本插入排序。我在第22和44行得到ArrayIndexOutOfBoundsException。帮助我解决这个问题。如何从插入方法返回已排序的整个数组。 返回[]不工作........................................... ......

package analysis;

import java.util.*;

class Sort
{
    int i,j,n,temp;
    int a[] = new int[n];

    int insertion(int a[],int n)
    {
        for (i=1;i<n;i++) {
            j=i-1;
            while (i>0 && a[j]>a[i]) {
                temp = a[j];
                a[j] = a[i];
                a[i] = temp;
                i--;
                j--;
            }
        }
        return a[n];
    }
}

class Recurse
{
    private static Scanner sc;

    public static void main(String[] args)
    {
        System.out.println("enter array size");
        int l,s;
        sc = new Scanner(System.in);
        s = sc.nextInt();
        int b[] = new int[s];
        int c[] = new int[s];
        for (l=0;l<s;l++) {
            b[l] = sc.nextInt();
        }
        Sort so = new Sort();
        c[s] = so.insertion(b,s);
        System.out.println("Sorted array is ");
        for (l=0;l<s;l++) {
            System.out.println(c[l]);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您的代码的这两行会导致问题:

int a[] = new int[n];
return a[n];

返回n索引处的元素是不可能的,因为索引包含从0n-1的数字。

答案 1 :(得分:0)

在第44行,您尝试从c[l]0访问s,但您只声明c[s]