我在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值,但其余信息正确打印。谁能帮我解决这个问题?谢谢!
答案 0 :(得分:1)
在您提供的代码中,没有setter
方法,而有getter
方法。是的,您可以使用getter和setter进行计算。
public void setAmount(int amount){
this.amount = quantity * price;
}
public void getAmount(){
return this.amount + otherProperty;
}
答案 1 :(得分:1)
让我们以此开始:
我是编程的新手,但是我知道这种方法被称为setter。
不,不是。
在OO中,代码(大部分)由类组成,这些类由状态(字段)和(通常)对该状态进行操作的方法组成。
按照惯例...
您的方法既不是setter也不是(纯)getter:
它不是设置器,因为它没有将wages
设置为提供的值。 (它是根据先前提供的值进行计算的。)
您可以将其视为wages
字段的获取方法,但它不纯,因为它会更新该字段并返回其值。
每次我打印“ wages”变量时,它只会给我零,没有别的,我在主变量中定义了其他变量hoursWorked和rateOfPay
如果不看其余代码,我们将无法解释。但是,我怀疑问题是以下之一:
hoursWorked
或rateOfPay
中的任何一个均为零...是因为未正确地设置并将其初始化为非零值。
没有调用calculateWages
方法。
您有定义该方法的类的多个实例...并且您的代码正在寻找错误的实例。
可能...某些涉及的变量被错误地声明为static
。s
更新-现在我看到了您的代码,wages
为零的原因是您的代码未调用calculateWages
。
答案 2 :(得分:0)
在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));
}
}
答案 3 :(得分:0)
您可以将这些值传递给calculateWages()方法。 试试这个
<select multiple="multiple" size="3">
<option value="1" selected>One</option>
<option value="2" disabled>Two</option>
<option value="3" disabled>Three</option>
</select>
答案 4 :(得分:0)
您可能想通过在main类之外使用main方法创建一个类来简化此工作,以完成工资计算的这一特定工作。我们在编程中将此称为“隔离”,我们想将一个类与另一个类隔离,并确保每个类仅执行一项特定的工作。这是一个将获得总工资的班级示例:
public class WagesCalc {
public static double calculateWages(int hoursWorked, double hourlyWage) {
double wage = (double)hoursWorked * hourlyWage;
return wage;
}
}
在上面的代码中,我们可以创建一个名为WagesCalc的用于计算工资的类。在其中,我们可以创建一种称为计算工资的方法。您可以添加工作时间和小时工资作为课程的参数。然后,我们添加一个变量,然后返回工资。我们将此方法设为静态,以便可以在不创建类实例的情况下将其返回。这是main方法中的代码:
公共类应用{
public static void main( String[] args )throws IOException{
double wages = WagesCalc.calculateWages(23, 23.50);
System.out.println("My total wage is $" + wages);
}
}
这是输出:
My total wage is $540.5