2016-10-04 2 views
0

Я пытаюсь создать функцию sum, тогда позвоните в main, но я получаю ошибку времени компиляции, и я не понимаю, почему это неверно.Печать суммы массива

class FindSum { 
    int sum(int[] arr) { 
     int sum = 0; // O(1) 
     for (int i = 0; i < arr.length; i++) { // n times 
      sum += arr[i]; // O(1) 
     } 
     return sum; // O(1) 
    } 

    // Driver program to test above functions 
    public static void main(String[] args) { 
     int arr[] = new int[]{5, 5, 10, 100, 10, 5}; 
     System.out.println(sum(arr)); 
    } 
} 
+0

бы быть * действительно полезно * если вы могли бы на самом деле сказать нам, что ошибка , Вопросы, требующие от нас отладки, явно не соответствуют теме. Просьба представить [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve), который демонстрирует ошибку, ожидаемое и фактическое поведение. – Li357

+0

Вероятно, вы должны включить то, что ошибка компилятора SAYS, что является самой важной частью ошибки компилятора. – nhouser9

+0

Вам нужно сделать метод 'sum' static. @AndrewL. это плохой вопрос, но это также MCVE ... его полное, воспроизводит проблему и минимально. – nhouser9

ответ

1

метод sum должен быть статическим, чтобы его вызывали в основном методе.

2

Вы вызываете нестатический метод из статического метода. Вы можете либо сумма изменения статичным, как это:

public static int sum(int[] arr) { 

или создавать новый объект в главной функции:

public int sum(int[] arr) { 
    int sum = 0; // O(1) 
    for (int i = 0; i < arr.length; i++) { // n times 
     sum += arr[i]; // O(1) 
    } 
    return sum; // O(1) 
} 

// Driver program to test above functions 
public static void main(String[] args) { 
    int arr[] = new int[]{5, 5, 10, 100, 10, 5}; 
    FindSum instance = new FindSum(); 
    System.out.println(instance.sum(arr)); 
} 
Смежные вопросы