gpt4 book ai didi

java - 继承 - 从 Employee 类创建 Commission Employee 类并进行测试

转载 作者:行者123 更新时间:2023-12-01 19:23:07 25 4
gpt4 key购买 nike

早上好,我的任务是: 将 CommissionEmployee 类重写为 Employee 的子类。 CommissionEmployee 应仅包含未在父类(super class) Employee 中声明的实例变量和方法。 CommissionEmployee 的构造函数应调用 Employee 的构造函数,而 CommissionEmployee 的 toString 方法应调用 Employee 的 toString 方法。创建一个 Driver 类来测试您的新 CommissionEmployee 类。提示用户输入名字、姓氏、社会安全号码、销售总额和佣金率,并创建一个 CommissionEmployee 对象,使用 toString 方法打印其信息。我似乎遇到的问题是 CommissionEmployeeTest 类不会输出我在 CommissionEmployee 类的 toString 方法中放置的内容。我觉得我的父类(super class) Employee 和我的测试类都是正确的,但我相信错误存在于我创建的用于确定收入的方法中的某个地方。我正在寻找的输出是员工名字 姓氏社会安全号码 yield 收入为总销售额+(佣金率*总销售额)这是我遇到的错误:

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);
}
}
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());
}
}

错误通过get方法获取员工信息:输入员工的名字:John输入员工的姓氏:Doe输入员工的社保号码:123456789员工总销售额:4000.00员工佣金率:.1线程“main”中的异常 java.lang.StackOverflowError 在 CommissionEmployee.earnings(CommissionEmployee.java:45)

我尝试过操作 CommissionEmployee 中的 toString 方法以及确定收入的方法,但我感觉自己在白费力气。我很感激任何帮助。我的类还剩 1 周,我觉得每周发布问题时都可以贡献更多信息,然后我做了最后一个问题。预先感谢您。

最佳答案

我已经解决了这个问题。经过审查和修改(几次)后我找到了答案。我需要修改我的 toString 方法和收入方法。清理了相当多的代码并解决了。

关于java - 继承 - 从 Employee 类创建 Commission Employee 类并进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59338033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com