当前位置: 首页 > 知识库问答 >
问题:

在java中获取值形式“get and set”

潘衡
2023-03-14

我有一个学校的问题,我被卡住了。问题是总工资一直上升到0.0。

问题是:

使用以下字段设计一个工资单类:

•姓名:一个包含员工姓名的字符串•idNumber:一个整数表示员工的ID号•rate:一个包含员工小时工资率的双精度值•hours:一个整数表示该员工工作的小时数

该类还应具有以下方法:

构造函数:将员工的姓名和身份证号作为参数访问器:允许访问工资类的所有字段突变器:让用户为工资类的字段赋值GrossPay:返回员工的总工资,计算为工作小时数乘以小时工资率。

编写另一个程序,通过创建一个Payroll对象来演示该类,然后要求用户按以下顺序输入员工的数据:姓名、身份证号、费率、工时。然后,该程序应打印出以下格式的语句(例如,如果您有一位名叫Chris Jacobsen的员工,身份证号为11111,他以10美元/小时的价格工作5小时):

11111号员工克里斯·雅各布森的工资总额为50美元。

使用文本格式,使工资总额四舍五入到小数点后两位。

这是我到目前为止所拥有的:

         import java.util.Scanner;

     public class Payroll
     {
        private String EmployeeName;
        private int IDnumber;
        private double HourlyPayRate;
        private double TotalHoursWorked;
        private double TotalGrossPay;

        public Payroll(String Name, int ID, double HourlyRate, double HoursWorked)
        {
            EmployeeName = Name;
            IDnumber = ID;
        }
        public String getEmployeeName()
        {
            return EmployeeName;
        }
        public int getIDnumber()
        {
            return IDnumber;
        }
        public void setHourlyPayRate(double HourlyRate)
        {
            HourlyPayRate = HourlyRate;
        }
        public double getHourlyPayRate()
        {
            return HourlyPayRate;
        }
        public void setTotalHoursWorked(double HoursWorked)
        {
            TotalHoursWorked = HoursWorked;
        }
        public double getTotalHoursWorked()
        {
            return TotalHoursWorked;
        }
        public void setTotalGrossPay(double GrossPay)
        {
            TotalGrossPay = GrossPay;
        }
        public double getTotalGrossPay(double HourlyRate, double HoursWorked)
        {
            TotalGrossPay = HourlyRate * HoursWorked;
           return TotalGrossPay;
        }


        public static void main(String[] args)
        {
            String EmployeeName;
            int IDnumber;
            double TotalHoursWorked;
            double HourlyPayRate;
            double TotalGrossPay;

           Scanner keyboard = new Scanner(System.in);

            System.out.print("Enter employee's name:");
            EmployeeName = keyboard.nextLine();

            System.out.print("Enter employee's ID number:" );
            IDnumber = keyboard.nextInt();

            System.out.print("Enter hourly rate:");
            HourlyPayRate = keyboard.nextDouble();

            System.out.print("Enter number of hours worked:");
            TotalHoursWorked = keyboard.nextDouble();

            Payroll pay = new Payroll(EmployeeName, IDnumber, HourlyPayRate, TotalHoursWorked);

            System.out.print(EmployeeName + ", " + "employee number " + IDnumber + ", made $" + 
           pay.TotalGrossPay + " in gross pay.");
       }
  }

谢谢你的帮助。。。

共有2个答案

杨君之
2023-03-14

在你的构造器中,你没有用HourlyRate和HoursWorked做任何事情

public Payroll(String Name, int ID, double HourlyRate, double HoursWorked)

为什么您的getter采用参数,您需要将其重命名为计算器GrossPay()之类的东西。删除它们并使用实例成员Hourly费率HoursWorked来计算总工资。这就是为什么您会得到0.0的结果

这里值得注意的另一点是,未初始化时的双变量被Java设置为0.0

public double getTotalGrossPay(double HourlyRate, double HoursWorked)
郭辉
2023-03-14

TotalGrossPay是一个计算值,除非调用方法进行计算,否则它将保留为默认值(0

事实是,无论如何都不应该存储这个值,因为它的值实际上是由其他字段的计算决定的。

从类中删除TotalGrossPay字段,编写一个简单的“getter”,计算并返回值。。。

public double getTotalGrossPay()
{
    return HourlyRate * HoursWorked;
}

一般来说,不应该直接访问字段,而应该始终通过方法访问它们的值(设置/获取)

另外,不要忽略传递给构造函数的值。。。

public Payroll(String Name, int ID, double HourlyRate, double HoursWorked)
{
    EmployeeName = Name;
    IDnumber = ID;
    // What about HourlyRate and HoursWorked??
}

让用户提供这些vai setter或在您的构造函数中分配它们(是的,您可以使用setter在事后更改值...)

public Payroll(String Name, int ID, double HourlyRate, double HoursWorked)
{
    EmployeeName = Name;
    IDnumber = ID;
    this.HourlyRate = HourlyRate;
    this.HoursWorked = HoursWorked;
}

您可能希望对Java TM编程语言有一个通读的代码约定,这将使人们更容易阅读您的代码,也使您更容易阅读他人的代码

 类似资料:
  • 问题内容: 如何在Java中获取char的UTF8代码?我有char’a’,我想要值97我有char’é’,我想要值233 这是更多值的表格 我试过了,但结果却是10分而不是97分,为什么? 这似乎很基本,但是任何帮助将不胜感激! 问题答案: 实际上是包含该字符的unicode值(准确地说是UTF-16-您需要 两个 s来表示BMP之外的字符)的数字类型。您可以用它做的所有事情都可以用。 尝试将字

  • 问题内容: 我有一本字典,其中包含用枚举值散列的对象: 我希望能够提取此字典包含的所有颜色(值)的数组。我以为我可以使用该属性,就像遍历字典值()一样,但这会返回错误: 似乎该方法返回了一个更抽象的集合类型,而不是返回值的an 。有没有一种方法可以获取包含字典值的而不循环提取它们的值? 问题答案: 从Swift 2.0开始,的属性现在返回而不是。该类型知道如何使用此抽象集合类型进行初始化: Swi

  • 我是Java和Apache spark的新手,并试图弄清楚如何从spark中的数据集中以平面列表的形式获取单个列的值。 我如何使用Java在spark中实现这一点?

  • 问题内容: 我正在尝试从ArrayList中获取值。这是我的代码示例: 修订版感谢所有答案,我可能应该在代码中添加更多内容。在Car类中,我有另一种方法来计算包括税金在内的总费用。 在主要班级 再次感谢 问题答案: 假设您的课程有价格的吸气剂方法,则可以简单地使用 元素的索引在哪里。 您也可以使用 如果需要存储,还需要从函数中返回 主要 并更改您的功能类型

  • 我编写了一个servlet过滤器,在其中我试图获得自定义header=samlRequest的值,从rest客户机/Postman chrome插件中我获得了samlRequest的值,但是使用ajax调用我提供了samlRequest键及其值,但是在java中,我在“access-control-request-headers”中获得了唯一的键samlRequest,如何获得samlReques

  • 问题内容: 我有一个看起来像这样的XML org.w3c.dom.Node: 我如何以弦乐形式获得零件? 问题答案: 同样的问题。为了解决这个问题,我编写了这个辅助函数: