[英]Using mutator and accesor methods in Java and creating objects to calculate the average of numbers
我的任務是創建一個 class 來對一系列數字進行計數、求和和平均。 class 平均計算器的規格為:
已提供給 AverageCalculator 的運行總和的 int 類型的實例變量
int 類型的實例變量,用於計算已提供給 AverageCalculator 的數字
無參數構造函數: AverageCalculator()
將數字添加到 AverageCalculator 的 mutator 方法: void add(int newNum)
一個訪問器方法,用於返回添加到 AverageCalculator 的所有數字的總和: int getSum()
一個訪問器方法,用於返回添加到 AverageCalculator 中的數字的計數或數量: int getCount()
一個訪問器方法,用於返回添加到 AverageCalculator 中的所有數字的平均值 - 請注意,實例變量是 int,並且返回類型是 double,如果沒有將數字添加到 object,則返回 0: double getAverage()
編寫一個 class, AverageCalculatorMain 包含一個 main 方法並執行以下操作:
這是我到目前為止所擁有的:
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());
}
}
但是,當我嘗試創建新的 object (AverageCalculator average = new AverageCalculator(90);) 時,出現一個錯誤,提示它未定義。 如何創建此 object 並成功傳遞其值?
問題是您正在嘗試使用parametrised constructor
創建 object
AverageCalculator average = new AverageCalculator(90);
但是您的AverageCalculator
class 中沒有parametrised constructor
函數。
所以改成
AverageCalculator average = new AverageCalculator();
或者
創建一個參數化的構造函數。
public AverageCalculator(int count) {
this.count = count;
}
或者根據您的需要,您可以使用兩個參數創建,即sum
和count
編輯:
你可以有setter
方法
public void setCount(int sum) {
this.sum = sum;
}
並且在object創建后,可以調用該方法設置值。
在 class 中定義兩個構造函數,
無參數構造函數和單參數構造函數
public AverageCalculatorMain(){}
public AverageCalculatorMain(int x){
sum = x;
}
如果您打算在運行時傳遞未知數量的 arguments 那么您應該使用可變參數構造函數
public AverageCalculatorMain(int ...x){
}
或者最好還是將集合作為參數傳遞給您的構造函數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.