无法在java中的main函数中检索数组

时间:2018-03-08 14:33:14

标签: java arrays sorting mergesort

enter image description here以下是合并排序的代码。我在最后一行收到错误。我还添加了评论。我无法检索方法merge_function(int [] a,int [] b)返回的数组。错误说“非静态方法merge_sort(int [],int,int)无法从demo1.Merge.main中的静态上下文引用”。请帮忙..!

public class Merge {
    int[] merge_sort(int[] arr, int s, int e){
        if(arr.length==1)
            return arr;
        int m=(s+e)/2;
        int []a= merge_sort(arr,s,m);
        int []b= merge_sort(arr,m+1,e);
        int []c= merge(a,b);
        print(arr);
        return c;

    }
    public void print(int[] arr)
    {
        System.out.println("Elements after sorting:");
        for(int i=0;i<arr.length;i++)
        {
            System.out.print(arr[i]+" ");
        }
    }
    int[] merge(int[] a, int[] b)
    {
        int i=0,j=0,k=0;
        int []r=new int[a.length+b.length];
        while(i!=a.length && j!=b.length)
        {
            if(a[i]<b[j])
            {
                r[k]=a[i];
                i++; j++; k++;
            }
            else if(a[i]==b[j])
            {
                r[k]=a[i];
                i++; j++; k++;
            }
            else if(a[i]>b[j])
            {
                r[k]=b[j];
                j++; k++;
            }
        }
        return r;
    }
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        System.out.println("Enter the length of an array.");
        int n=in.nextInt();
        System.out.println("Enter the numbers.");
        int arr[]=new int[n];
        for(int i=0;i<n;i++)
        {
            arr[i]=in.nextInt();
        }

        //error is here
        int []r = merge_sort(arr,0,arr.length-1);
    }
}

1 个答案:

答案 0 :(得分:0)

如果不使用包含这些方法的类的实例,则无法从静态上下文中调用非静态方法。