Sorting 合并排序数组,然后添加

Sorting 合并排序数组,然后添加,sorting,merge,Sorting,Merge,我终于让我的程序对数组进行排序,但我无法让它添加它。我收到一个错误,内容如下: MergeSorter.java:21:错误:无法从静态上下文引用非静态方法sumOfArray(int[],int) 代码: import java.util.Arrays; public class MergeSorter{ public static void sort(int[] a) { if (a.length <= 1) { return; } int[

我终于让我的程序对数组进行排序,但我无法让它添加它。我收到一个错误,内容如下:

MergeSorter.java:21:错误:无法从静态上下文引用非静态方法sumOfArray(int[],int)

代码:

import java.util.Arrays;

public class MergeSorter{ 
   public static void sort(int[] a)
   {  
      if (a.length <= 1) { return; }
      int[] first = new int[a.length / 2];
      int[] second = new int[a.length - first.length];
      for (int i = 0; i < first.length; i++) 
      { 
         first[i] = a[i]; 
      }
      for (int i = 0; i < second.length; i++) 
      { 
         second[i] = a[first.length + i]; 
      }
      sort(first);
      sort(second);
      merge(first, second, a);
      int sum =sumOfArray(a, a.length-1); 
   }

 private static void merge(int[] first, int[] second, int[] a){         
     int iFirst = 0; 
      int iSecond = 0;
      int j = 0; 
      while (iFirst < first.length && iSecond < second.length){  
         if (first[iFirst] < second[iSecond]) {  
            a[j] = first[iFirst];
            iFirst++;
         }
         else{  
            a[j] = second[iSecond];
            iSecond++;
         }
         j++;
      }
      while (iFirst < first.length){ 
         a[j] = first[iFirst]; 
         iFirst++; j++;
      }
      while (iSecond < second.length){ 
         a[j] = second[iSecond]; 
         iSecond++; j++;
      }
   }

   public int sumOfArray(int[] a, int n){
    if (n == 0)
        return a[n];
    else
        return a[n] + sumOfArray(a, n-1);
   }
}
导入java.util.array;
公共类合并分类器{
公共静态无效排序(int[]a)
{  
如果(a.length使其静止?
比如:

见此帖:


简言之,您需要使该方法成为静态的,或者在类的实例上调用它。

一个简单的解决方法是更改

 public int sumOfArray(int[] a, int n)

否则,您必须创建一个MergeSorter对象并调用sumOfArray方法:

 int sum =new MergeSorter().sumOfArray(a, a.length-1)

谢谢你们!我觉得好笨!我整晚都在盯着这个!
 public static int sumOfArray(int[] a, int n)
 int sum =new MergeSorter().sumOfArray(a, a.length-1)