猿问

我如何在 java 的 setter 方法中执行计算?

我在一个 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 值,但他们的其余信息打印正确。谁能帮我解决这个问题?谢谢!


HUWWW
浏览 186回答 3
3回答

ibeautiful

让我们从这个开始:我是编程新手,但我知道这种类型的方法称为 setter。不,不是。在 OO 中,代码(主要)由由状态(字段)和(通常)对该状态进行操作的方法组成的类组成。按照惯例 ...甲设定器是设定字段作为方法的参数提供了新的值的方法。甲吸气剂是返回字段的值的方法。您的方法既不是 setter 也不是(纯)getter:它不是一个 setter,因为它没有设置wages为提供的值。(它根据先前提供的值进行计算。)您可以将其视为wages字段的 getter ,但它是“不纯的”,因为它会更新字段并返回其值。每次我去打印“工资”变量时,它只给我一个零,没有别的,我在主文件中定义了其他变量 hoursWorked 和 rateOfPay如果没有看到您的其余代码,我们无法解释这一点。但是,我怀疑问题是以下之一:任一hoursWorked或者rateOfPay是零......因为他们没有被正确地设置/初始化为非零值。calculateWages没有调用该方法。您有多个定义此方法的类的实例……而您的代码正在查看错误的实例。可能……所涉及的一些变量被错误地声明为static.s更新- 现在我看到你的代码,wages为零的原因是你的代码没有调用calculateWages.

慕森卡

在您提供的代码中,没有setter方法,而是有一个方法getter。是的,您可以在 getter 和 setter 中进行计算。public void setAmount(int amount){  this.amount = quantity * price;  } public void getAmount(){  return this.amount + otherProperty;  } 

智慧大石

在 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));    }}
随时随地看视频慕课网APP

相关分类

Java
我要回答