【发布时间】: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