为了账号安全,请及时绑定邮箱和手机立即绑定

我如何在 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条经验 获得超5个赞

让我们从这个开始:

我是编程新手,但我知道这种类型的方法称为 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 关注
  • 182 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信