【问题标题】:Unable to retrieve the array in main function in java无法在java的main函数中检索数组
【发布时间】:2018-03-08 14:33:14
【问题描述】:

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

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

【问题讨论】:

  • @jsheeran 错误说“线程中的异常”主”java.lang.RuntimeException:无法编译的源代码 - 无法从静态引用非静态方法 merge_sort(int[],int,int)在 demo1.Merge.main(Merge.java:72)"
  • 您要么需要重写 main() 方法来创建类的实例,然后处理来自该实例的逻辑,要么将所有相关方法声明为 static

标签: java arrays sorting mergesort


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-06-15
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多