亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何在 java 的 setter 方法中執行計算?

我如何在 java 的 setter 方法中執行計算?

HUWWW 2021-08-25 16:38:34
我在一個 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 值,但他們的其余信息打印正確。誰能幫我解決這個問題?謝謝!
查看完整描述

3 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

讓我們從這個開始:

我是編程新手,但我知道這種類型的方法稱為 setter。

不,不是。

在 OO 中,代碼(主要)由由狀態(字段)和(通常)對該狀態進行操作的方法組成的類組成。

按照慣例 ...

  • 設定器是設定字段作為方法的參數提供了新的值的方法。

  • 吸氣劑是返回字段的值的方法。

您的方法既不是 setter 也不是(純)getter:

  • 它不是一個 setter,因為它沒有設置wages提供的值。(它根據先前提供的值進行計算。)

  • 您可以將其視為wages字段的 getter ,但它是“不純的”,因為它會更新字段并返回其值。


每次我去打印“工資”變量時,它只給我一個零,沒有別的,我在主文件中定義了其他變量 hoursWorked 和 rateOfPay

如果沒有看到您的其余代碼,我們無法解釋這一點。但是,我懷疑問題是以下之一:

  1. 任一hoursWorked或者rateOfPay是零......因為他們沒有被正確地設置/初始化為非零值。

  2. calculateWages沒有調用該方法。

  3. 您有多個定義此方法的類的實例……而您的代碼正在查看錯誤的實例。

  4. 可能……所涉及的一些變量被錯誤地聲明為static.s


更新- 現在我看到你的代碼,wages為零的原因是你的代碼沒有調用calculateWages.


查看完整回答
反對 回復 2021-08-25
?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

在您提供的代碼中,沒有setter方法,而是有一個方法getter。是的,您可以在 getter 和 setter 中進行計算。


public void setAmount(int amount){

  this.amount = quantity * price;  


public void getAmount(){

  return this.amount + otherProperty;  


查看完整回答
反對 回復 2021-08-25
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

在 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));


    }


}


查看完整回答
反對 回復 2021-08-25
  • 3 回答
  • 0 關注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號