2015-04-08 2 views
1

Наконец-то я получил свою программу для сортировки моего массива, но я не могу ее добавить. Я получаю сообщение об ошибке, что читает:Объединить сортировку массива, а затем добавить

MergeSorter.java:21: error: non-static method sumOfArray(int[],int) cannot be referenced from a static context

Код:

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

Спасибо, ребята! Я чувствую себя таким глупым! Я смотрю на это всю ночь! – JBoom

ответ

0

Сделать это статический? как:

public static int sumOfArray(int[] a, int n) 
{ 
    if (n == 0) 
     return a[n]; 
    else 
     return a[n] + sumOfArray(a, n-1); 
} 
0

легко исправить было бы изменить

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

в

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

иначе вы бы создать объект MergeSorter и вызвать метод sumOfArray:

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