所以我正在尝试编写一个包含3个类的程序(不包括带有该方法的类)。这些是一个工作类,它应该是抽象的,它有一个名称,工资率和一些其他方法,如getname,getsalary和computepay(int hours)。我还有另外两种方法,一种叫做每小时工,另一种叫做工资,是工人的子类,不是抽象的。如果小时数最多为40小时工,那么每小时工的计算工资应该按实际工时数返还小时工资。超过40,超额工资按正常工资的1 1/2支付。 对于受薪工人来说,无论工作多少小时,工资都是40小时。 问题是我的受薪工人工作正常,但对于我的每小时工,某种程度上小时变量已被定义为40或者其他......我不确定是什么问题。你能检查我的程序,看看有什么问题吗?感谢
abstract class Worker {
String name;
double salaryRate;
public abstract double computePay(int hours);
public abstract String getName();
public abstract double getSalary();
}
class HourlyWorker extends Worker {
public HourlyWorker(String workerName, double workersalaryRate) {
name = workerName;
salaryRate = workersalaryRate;
}
@Override
public String getName() {
return name;
}
@Override
public double getSalary() {
return salaryRate;
}
@Override
public double computePay(int hours) {
if (hours <= 40) {
System.out.println(hours);
System.out.println(salaryRate);
System.out.println(salaryRate * hours);
return salaryRate * hours;
} else{
System.out.println((salaryRate * 40) + (3 / 2) * (hours - 40) * salaryRate);
return (salaryRate * 40) + (3 / 2) * (hours - 40) * salaryRate;
}
}
}
class SalariedWorker extends Worker {
public SalariedWorker(String workerName, double workersalaryRate) {
name = workerName;
salaryRate = workersalaryRate;
}
@Override
public String getName() {
return name;
}
@Override
public double getSalary() {
return salaryRate;
}
@Override
public double computePay(int hours) {
System.out.println(salaryRate * 40);
return salaryRate * 40;
}
}
public class WorkerTester {
public static void main(String[] args) {
Worker Bob = new HourlyWorker("Bob", 15);
Worker JohnnyBoy = new SalariedWorker("Johnny", 20);
Bob.computePay(20);
JohnnyBoy.computePay(50);
}
}
这应该给300和800 + 3/2 * 10 * 20 = 1100,但它给出300和800.什么错了?
答案 0 :(得分:0)
我发现了什么是错的......我不小心让鲍勃成了小时工,所以我把它打开了。
〜对不起。