我有一个学校的问题,我被卡住了。问题是总工资一直上升到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.");
}
}
谢谢你的帮助。。。
在你的构造器中,你没有用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)
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: 我如何以弦乐形式获得零件? 问题答案: 同样的问题。为了解决这个问题,我编写了这个辅助函数: