Java 继承-从class Employee和testing创建一个class Commission Employee
早上好,我被指派到: 将CommissionEmployee类重写为Employee的子类。CommissionEmployee应仅包含超类Employee中未声明的实例变量和方法。CommissionEmployee的构造函数应该调用Employee的构造函数,CommissionEmployee的toString方法应该调用Employee的toString方法。 创建一个驱动程序类来测试新的CommissionEmployee类。提示用户输入名字、姓氏、社会保险号码、总销售额和佣金率,并使用toString方法打印其信息,创建CommissionEmployee对象。 我似乎遇到的问题是,类CommissionEmployeeTest不会输出我在类CommissionEmployee的toString方法中放置的内容。我觉得我的超类雇员和我的测试类一样都是正确的,但我认为错误在于我创建的确定收入的方法中的某个地方。我想要的输出是 员工姓名 社会保险号码 收益 收入将是总销售额+的总和(佣金率*总销售额) 以下是我的错误信息:Java 继承-从class Employee和testing创建一个class Commission Employee,java,inheritance,subclass,tostring,superclass,Java,Inheritance,Subclass,Tostring,Superclass,早上好,我被指派到: 将CommissionEmployee类重写为Employee的子类。CommissionEmployee应仅包含超类Employee中未声明的实例变量和方法。CommissionEmployee的构造函数应该调用Employee的构造函数,CommissionEmployee的toString方法应该调用Employee的toString方法。 创建一个驱动程序类来测试新的CommissionEmployee类。提示用户输入名字、姓氏、社会保险号码、总销售额和佣金率,并使
class Employee
public class Employee extends Object {
protected final String firstName;
protected final String lastName;
protected final String socialSecurityNumber;
public Employee(String firstName, String lastName, String socialSecurityNumber) {
this.firstName = firstName;
this.lastName = lastName;
this.socialSecurityNumber = socialSecurityNumber;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String getSocialSecurityNumber() {
return socialSecurityNumber;
}
@Override
public String toString() {
return String.format(firstName, lastName, socialSecurityNumber);
}
}
错误
通过get方法获取的员工信息:
输入员工的名字:John
输入员工的姓氏:Doe
输入员工的社会保险号码:123456789
员工总销售额:4000.00
员工的佣金率:.1
线程“main”java.lang.StackOverflowerr中出现异常
收入(CommissionEmployee.java:45)
我试着在CommissionEmployee中运用我的toString方法以及我确定收入的方法,但我觉得我在旋转轮子。谢谢你的帮助。我还有一周的时间上课,我觉得当我每周发布一个问题时,我可以提供更多的信息,而不是上一个问题。提前谢谢。我已经解决了这个问题。经过(几次)复习和修改,我找到了我的答案。我需要修改我的toString方法和收入方法。清理了大量代码并解决了问题。没有与实例变量同名的方法。
class CommissionEmployee
public class CommissionEmployee extends Employee {
private double grossSales;
private double commissionRate;
private double earnings;
public CommissionEmployee(String firstName, String lastName, String socialSecurityNumber, double grossSales,
double commissionRate, double earnings) {
super(firstName, lastName, socialSecurityNumber);
if (grossSales < 0.0)
throw new IllegalArgumentException("Gross sales must be >= 0.0");
if (commissionRate <= 0.0 || commissionRate >= 1.0)
throw new IllegalArgumentException("Commission rate must be > 0.0 and < 1.0");
this.grossSales = grossSales;
this.commissionRate = commissionRate;
}
public void setGrossSales(double grossSales) {
if (grossSales < 0.0)
throw new IllegalArgumentException("Gross sales must be >= 0.0");
this.grossSales = grossSales;
}
public double getGrossSales() {
return grossSales;
}
public void setCommissionRate(double commissionRate) {
if (commissionRate <= 0.0 || commissionRate >= 1.0)
throw new IllegalArgumentException("Commission rate must be > 0.0 and < 1.0");
this.commissionRate = commissionRate;
}
public double getCommissionRate() {
return commissionRate;
}
public Double earnings(double d) {
return earnings(grossSales+ (commissionRate * grossSales));
}
public double getEarnings() {
return earnings;
}
public void setEarnings(double earnings) {
this.earnings = earnings;
}
@Override
public String toString() {
return String.format("%s: %s %s%n%s: %s%n%s: %.2f%n%s: %.2f%n%s: %.2f%n%s",
"commission employee", firstName, lastName,
"social security number", socialSecurityNumber,
"Total earnings", earnings(earnings));
}
public void setFirstName(String firstName) {
}
public void setLastName(String lastName) {
}
public void setSocialSecurityNumber(String socialSecurityNumber) {
}
public void setGrossSales(String grossSales) {
}
public void setCommissionRate(String commissionRate) {
}
}
class CommissionEmployeeTest
//CommissionEmployee test program.
import java.util.Scanner;
public class CommissionEmployeeTest {
public static void main(String[] args) { // instantiate CommissionEmployee object
CommissionEmployee employee =
new CommissionEmployee(null, null, null, 0, .1, 0);
Scanner input = new Scanner(System.in);
// get commission employee data
System.out.printf(
"Employee information obtained by get methods:%n");
System.out.printf("Enter employee's First name:");
String firstName = input.nextLine();
employee.setFirstName(firstName);
System.out.printf("Enter employee's last name:");
String lastName = input.nextLine();
employee.setLastName(lastName);
System.out.printf("Enter employee's social security number:");
String socialSecurityNumber = input.nextLine();
employee.setSocialSecurityNumber(socialSecurityNumber);
System.out.printf("Gross sales for employee:");
String grossSales = input.nextLine();
employee.setGrossSales(grossSales);
System.out.printf("Commission rate for employee:");
String commissionRate = input.nextLine();
employee.setCommissionRate(commissionRate);
System.out.printf("%n%s:%n%n%s%n",
"Updated employee information obtained by toString",
employee.toString());
}
}