2016-12-04 9 views
-1

Мой массив должен быть передан функции, но моя программа имеет ошибку и не компилируется. Что я делаю не так?Ошибка передачи массива в функцию. Он не может скомпилировать

  1. Я получаю ошибку в строке 13: "a1e.averData (баллы, MAX_SIZE);"
  2. Состояния ошибки, «не-статические переменные оценки не могут ссылаться из статический контекст. Присвоить Возвращаемое значение для новой переменной»
  3. Я также попытался назначить возвращаемое значение новой переменной. Это выглядело так: «float averData = a1e.averData (оценки, MAX_SIZE);»
  4. Ошибка была изменена на следующее: «Нестатические переменные не могут ссылаться на статический контекст. Нестатическая переменная MAX_SIZE не может ссылаться на статический контекст»
  5. Я попытался переместить его из основного в другие места в программе, но он просто не хочет работать для меня, и я не уверен, как это исправить.

Вот мой код:

package array1example; 

    public class Array1example 
    {  
     int i, sum; 
     float avg; 
     int scores[]; 
     int MAX_SIZE = 0; 
     /** 
     * 
     * @param args 
     */ 
     public static void main(String[] args) 
     { 
     /* An example of an array being passed to a function 
      This program stores integers in an array 
      and computes their average*/ 


      Array1example a1e = new Array1example(); 
     } 

     public Array1example() 
     { 
     this.scores = new int[]{5, 5, 12, 17, 11}; 
     a1e.averData(scores,MAX_SIZE); 
     } 
     private float averData(int[] scores1, int MAX_SIZE1) 
     { 

      int size = 0; 
      for(i=0, sum=0; i<size; i++) 
      { 
      System.out.println("Score " + " = " + scores1[i]); 
      sum += (scores1[i]); 
     } 
      avg = sum/i; 
      System.out.println("Average score: " + avg); 
     return avg;   
     } 

     } 
+0

Я думаю, что вы не изменили код и больше не отражает эту ошибку, и вы добавили больше проблем, пытаясь использовать 'a1e' в конструкторе. Я считаю, что исходная проблема связана с попыткой передать 'score' внутри' main', который не будет разрешен напрямую. Вам нужно будет сделать 'a1e.scores/MAX ...' – ChiefTwoPencils

+0

Geez! Не нужно кричать! –

ответ

1

Вы не можете использовать a1e.averData(scores,MAX_SIZE); в конструкторе, вместо изменить его в averData(scores,MAX_SIZE);

+0

Ваш конструктор похож на статический контекст. Однако ваш объект a1e нестационарен. –

+0

Это потому, что 'a1e' является локальной переменной в вашем' main' методе, поэтому вы не можете использовать ее вне этого метода. Вам также не нужно: в своем конструкторе вы находитесь внутри объекта, который вы создаете, поэтому вы можете вызвать метод на объекте без точечной нотации. –

+0

Я пытался сделать то, что вы предложили, и он все еще не компилируется. –