Мой код должен рассчитать среднее значение массива и распечатать его. Вот и я,

public class ArrayAverageTester
{

   public static void main(String[] args)
   {
      int[] numArray =  {12, 17, 65, 7, 30, 88};

     // Create an ArrayAverage object and print the result
     ArrayAverage[] arr = {12, 17, 65, 7, 30, 88};

     System.out.println("The average of the array is " + arr.getAverage()); 

   }
}

И мой класс ArrayAverage,

public class ArrayAverage
{
   private int[] values;

   public ArrayAverage(int[] theValues)
   {
      values = theValues;
   }

   public double getAverage()
   {
     int sum = 0;  

     for(int value : values)
     {
       sum += value;
     }

   return (sum/values.length);
   }
}

Моя ошибка говорит о том, что int нельзя преобразовать в ArrayAverage и что я забыл объявить метод getAverage () или он находится вне области видимости.

0
ICEFIRE_16 28 Янв 2020 в 06:15

3 ответа

Лучший ответ

Во-первых, ваш метод getAverage() выполняет целочисленные вычисления (в настоящее время). Вы можете исправить это как

public double getAverage() {
    int sum = 0;

    for (int value : values) {
        sum += value;
    }

    return (sum / (double) values.length);
}

Затем вам необходимо создать экземпляр new ArrayAverage (а не их массив) и передать конструктору ваш массив в среднее значение. Подобно,

ArrayAverage arr = new ArrayAverage(numArray);

Выходы

The average of the array is 36.5
1
Elliott Frisch 28 Янв 2020 в 03:25

Ваш синтаксис неверен. ArrayAverage[] означает «массив ArrayAverage с». Вы должны либо:

  • просто объявить нормальный int[]
  • создать один экземпляр ArrayAverage

Вы получаете ошибку: ваш компилятор ищет функцию getAverage(), определенную в массиве , а не ArrayAverage.

Оба следующих метода должны работать:

public static void main(String[] args) {
    int[] values = {1, 2, 3, 4, 5};

    double count = 0;
    for (int i = 0; i < values.length; i++) {
        count += values[i];
    }

    count /= values.length;

    System.out.println(count);
}

Или, используя ваш класс:

public static void main(String[] args) {
    System.out.println(new ArrayAverage(Arrays.asList(1, 2, 3, 4, 5)).getAverage());
}

С участием

public class ArrayAverage {
    private int[] values;

    public ArrayAverage(int[] values) {
        this.values = values;
    }

    public double getAverage() {

        double count = 0;
        for (int i = 0; i < values.length; i++) {
            count += values[i];
        }
    return /= values.length;
  }
}
0
cameron1024 28 Янв 2020 в 03:25

Это основная проблема объектно-ориентированного программирования, для тестирования вашего класса ArrayAverage необходимо создать экземпляр объекта (для этого используется зарезервированное слово «new»), и ошибка в том, что вы создаете массив ArrayAverage.

Чтобы заставить его работать так, как вы хотите, вам нужно всего лишь отправить numArray в ваш класс ArrayAverage в качестве параметра.

public static void main(String[] args) {
    int[] numArray =  {12, 17, 65, 7, 30, 88};

    // Create an ArrayAverage object and print the result
    ArrayAverage arr = new ArrayAverage(numArray);

    System.out.println("The average of the array is " + arr.getAverage()); 
}

Ответ

Среднее значение массива составляет 36,0

0
Erick Dávila 28 Янв 2020 в 03:37