[英]I am getting an else without if error and I don't understand why - JAVA
[英]I am fairly new to Java Inheritance and I don't understand why I have an error?
这是问题所在:
编写“市场营销人员”课程,以配合本章中介绍的其他律师事务所课程。 营销人员的年薪为50,000美元(比一般雇员多10,000美元),并且有一种名为advertise的附加方法,可以打印“立即行动,用完为止! 确保与Employee超类进行适当的交互。
到目前为止的代码:
public class Marketer extends Employee {
public Marketer() {
setBaseSalary(super.getSalary() + 10000.0);
}
public void advertise() {
System.out.println("Act now, while supplies last!") ;
}
}
这是输出应为:
50000.0
75535.0
立即行动,送完为止!
在以下站点上,有一个扩展名为Employee.java的文件扩展名,上面的代码如下: http : //practiceit.cs.washington.edu/problem.jsp?id=1324
因此,到目前为止,它打印出了除75535.0以外的所有预期结果! 我哪里做错了?? 当我运行代码时,它是这样说的(对于我在75535.0部分收到的错误):
(将基本工资更改为$ 65535.00)
因为我的输出是65535.0,比答案应该的少了10000。
自从我刚开始在Java中进行这些继承之类的操作以来,我似乎找不到该错误,因此我仍然不熟悉它。 谢谢您能帮助我了解我的问题。
这是正在发生的事情:
创建Marketer,它调用Employee的构造函数和实例初始化。 这将baseSalary
设置为40,000。 然后,您在baseSalary
构造函数中的代码运行并将baseSalary
设置为50,000。 他们的测试驱动程序调用setBaseSalary
与65535.0值,覆盖您的初始设置。
您的代码无法与Employee类正确交互。 Employee.java
的注释说,您的代码不应使用,调用或修改下面的值。 其中之一是baseSalary
变量,您可以在Marketer
构造函数中对其进行修改。 一旦测试驱动程序更改了值,您的班级就无法为Marketer
计算更改后的薪水。
您不应在构造函数中调用setBaseSalary
。 而是在Marketer中重写getSalary
,并在您自己的类中使用Employee中的getSalary
方法。
这是我的解决方案示例:
public class Marketer extends Employee {
public void advertise() {
System.out.println("Act now, while supplies last!");
}
public double getSalary() {
return super.getSalary() + 10000;
}
}
它应该可以帮助您更好地理解问题。
解决您的问题很简单。 只需如下定义Marketer类
public class Marketer extends Employee {
public void advertise() {
System.out.println("Act now, while supplies last!") ;
}
@Override
public double getSalary() {
return super.getSalary() + 10000.0; // $40,000.00
}
}
在这里,我们重写了Employee类的getSalary方法,每当我们要返回薪水时,我们都会在员工薪水上加上10000。
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.