![](/img/trans.png)
[英]How do I bring in Double values from one ActionListener method into another to perform a calculation? Java
[英]How do i perform a calculation within a setter method in java?
我在Java項目中有兩個類,一個是Employee1類,另一個是info類。 在Employee 1類中,我有以下代碼:
public class Employee1 {
String employeeName;
int hoursWorked;
double rateOfPay;
double wages;
public Employee1(String name, int hours, double pay) {
employeeName=name;
hoursWorked=hours;
rateOfPay=pay;
}
public String getName() {
return employeeName;
}
public void setName(String xName) {
employeeName = xName;
}
public double getHours() {
return hoursWorked;
}
public void setHours(int xHours) {
hoursWorked = xHours;
}
public double getPay() {
return rateOfPay;
}
public void setPay(double xPay) {
rateOfPay = xPay;
}
public double calculateWages () {
wages= hoursWorked * rateOfPay;
return wages;
}
public void print() {
System.out.println("name:"+ employeeName);
System.out.println("hours " + hoursWorked);
System.out.println("Wages Earned"+ wages);
}
}
在我的信息類中,我有以下代碼:
public class Info {
public static void main(String[] args) {
Employee1 x= new Employee1("Sarah",40,7.25);
Employee1 y=new Employee1("Bob",30,8.00);
Employee1 z= new Employee1("Todd",26, 8.25);
x.print();
}
}
我現在的問題是,我正在嘗試為Employee1類中的工資創建一個計算,就像您通過calculateWages方法可以看到的那樣。 但是,每當我調用現有員工的打印方法x時,工資總是顯示為0.0,而且我不確定為什么會這樣。 我為每個Employee1對象都有一個預先存在的變量,但我仍然獲得所有工資的0.0值,但其余信息正確打印。 誰能幫我解決這個問題? 謝謝!
您提供的代碼中沒有setter
方法,而是有一個getter
方法。 是的,您可以使用getter和setter進行計算。
public void setAmount(int amount){
this.amount = quantity * price;
}
public void getAmount(){
return this.amount + otherProperty;
}
讓我們以此開始:
我是編程的新手,但是我知道這種方法被稱為setter。
不,不是。
在OO中,代碼(大部分)由類組成,這些類由狀態(字段)和(通常)對該狀態進行操作的方法組成。
按照慣例 ...
您的方法既不是setter也不是(純)getter:
它不是設置器,因為它不會將wages
設置為提供的值。 (它基於先前提供的值進行計算。)
您可以將其視為“ wages
字段的獲取者,但它“不純凈”,因為它會更新該字段並返回其值。
每次我打印“ wages”變量時,它只會給我零,除此之外,我在主變量中定義了其他變量hoursWorked&rateOfPay
如果不看其余的代碼,我們將無法解釋。 但是,我懷疑問題是以下之一:
hoursWorked
或rateOfPay
均為零...,因為它們未正確設置/初始化為非零值。
沒有調用calculateWages
方法。
您有定義該方法的類的多個實例...並且您的代碼正在尋找錯誤的實例。
可能...某些涉及的變量被錯誤地聲明為static
.s
更新 -現在我看到了您的代碼, wages
為零的原因是您的代碼未調用calculateWages
。
在OOP的最佳實踐中,您的方法應有兩個參數:例如
public class Answer1 {
public static double calculateWages (int hoursWorked, double rateOfPay){
return hoursWorked * rateOfPay;
}
public static void main(String[] args) {
System.out.println(calculateWages(6, 5.24));
}
}
您可以將這些值傳遞給calculateWages()方法。 嘗試這個
public double calculateWages (int hoursWorked, double rateOfPay) {
return hoursWorked * rateOfPay;
}
您可能想通過在main類之外使用main方法創建一個類來簡化此工作,以完成工資的這一特定工作。 我們在編程中將此稱為“隔離”,我們想將一個類與另一個類隔離,並確保每個類僅執行一項特定的工作。 這是一個將獲得總工資的類的示例:
public class WagesCalc {
public static double calculateWages(int hoursWorked, double hourlyWage) {
double wage = (double)hoursWorked * hourlyWage;
return wage;
}
}
在上面的代碼中,我們可以創建一個稱為WagesCalc的類來計算工資。 在其中,我們可以創建一種稱為計算工資的方法。 您可以添加工作時間和小時工資作為課程的參數。 然后,我們添加一個變量,然后返回工資。 我們將此方法設為靜態,以便可以在不創建類實例的情況下將其返回。 這是main方法中的代碼:
公共類應用{
public static void main( String[] args )throws IOException{
double wages = WagesCalc.calculateWages(23, 23.50);
System.out.println("My total wage is $" + wages);
}
}
這是輸出:
My total wage is $540.5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.