Использование методов mutator и accesor в Java и создание объектов для вычисления среднего числа - PullRequest
1 голос
/ 20 июня 2020

Мое задание - создать класс для подсчета, суммирования и усреднения ряда чисел. Спецификации класса AverageCalculator:

переменная экземпляра типа int для текущей суммы, переданной в AverageCalculator. переменная экземпляра типа int для подсчета чисел, переданных в AverageCalculator конструктор без аргументов: AverageCalculator () метод мутатора для добавления числа в AverageCalculator: void add (int newNum) метод доступа для возврата суммы всех чисел, добавленных в AverageCalculator: int getSum () метод доступа для возврата счетчика или числа чисел, добавленных в AverageCalculator: int getCount () метод доступа для возврата среднего значения всех чисел, добавленных в AverageCalculator - обратите внимание, что переменные экземпляра - это int, а тип возврата - double, если к объекту не были добавлены числа, вернуть 0: double getAverage ()

Напишите класс AverageCalculatorMain, который содержит основной метод и выполняет следующие действия:

  • создает объект AverageCalculator, добавляет одно число в AverageCalculator, выводит сумму, количество, и average
  • создают еще один объект AverageCalculator. Сложите три числа, напечатайте сумму, количество и среднее значение

Это то, что у меня есть до сих пор:


public class AverageCalculator {
    private int sum;
    private int count;
    
    public AverageCalculator() {
        sum = 0;
        count = 0;
    }
    public void add(int newNum) {
        this.sum = this.sum + newNum;
        count++;
    }
    
    int getSum() {
        return sum;
    }
    
    int getCount() {
        return count;
    }
    
    double getAverage() {
        return sum / count;
    }
    
}

Это то, что у меня есть для основного метода:

public class AverageCalculatorMain {

    public static void main(String[] args) {
        
        AverageCalculator average = new AverageCalculator(90);
        
        System.out.println("The sum is " + average.getSum() + "\nThe count is " + average.getCount() + "\nThe average is " + average.getAverage());
        

    }

}

Однако, когда я пытаюсь создать новый объект (AverageCalculator average = new AverageCalculator (90);), появляется ошибка, указывающая, что он не определен. Как я могу создать этот объект и успешно передать его значение (я)?

Ответы [ 2 ]

1 голос
/ 20 июня 2020

Проблема в том, что вы пытаетесь создать объект, используя parametrised constructor

 AverageCalculator average = new AverageCalculator(90);

Но у вас нет parametrised constructor в вашем AverageCalculator классе.

Итак измените его на

 AverageCalculator average = new AverageCalculator();

OR

создайте параметризованный конструктор.

public AverageCalculator(int count) {
    this.count = count;
}

Или в соответствии с вашими потребностями вы можете создать с двумя параметрами, например sum и count

EDIT:

У вас может быть setter метод

public void setCount(int sum) {
  this.sum = sum;
}

И после создания объекта вы можете вызвать этот метод, чтобы установить значение.

0 голосов
/ 20 июня 2020

Определите в своем классе два конструктора,

конструктор без аргументов и конструктор с одним аргументом

public AverageCalculatorMain(){}
public AverageCalculatorMain(int x){
 sum = x;
}

Если вы намерены передать неизвестное количество аргументов во время выполнения, вам следует используйте конструктор varargs

public AverageCalculatorMain(int ...x){
     
    }

или еще лучше передайте коллекцию в качестве аргумента вашему конструктору

...