Java目标/选择类/对象 - 困惑(抱歉标题不好)

时间:2015-12-01 10:36:08

标签: java class object inheritance methods

我在下面通过打印一些员工详细信息以及每周/每月工资来产生预期结果。

但是我知道我不应该像我一样在构造函数中输入数据。

我只需要为“PartTimeEmployees”提示一小时工作价值,而不是我做的那样。

我已经使用For-Each循环,Enhanced For循环和使用instanceOf运算符进行了测试。

如果我可以获得一些指导/提示或示例,说明如何完成构造函数中当前正在完成的操作,但在TestEmployee类中,这将是很好的。

大多数情况下,我不确定如何描述我想要实现的目标。这有点妨碍谷歌搜索。 (帮助获得更好的头衔也会很棒)

提前致谢。

public class TestEmployee
{
    public static void main(String[] args)
    {
        int size;
        Employee[] employees = new Employee[4];
        employees[0] = new FullTimeEmployee("Jane", 26000);
        employees[1] = new PartTimeEmployee("Jack");
        employees[2] = new FullTimeEmployee("Lucy", 52000);
        employees[3] = new PartTimeEmployee("Lenny");

        for(int i = 0; i < employees.length; i++)
        {
        employees[i].print();
        }

    }
}

类:PartTimeEmployee - 构造函数:

public PartTimeEmployee(String thisName)
{
    super(thisName);

    System.out.println("Please enter the number of hours worked by " + thisName + ": ");
    numHours = keyboard.nextInt();

    setHours(numHours);
}

4 个答案:

答案 0 :(得分:0)

构造函数不适合用户输入。它的主要目的是初始化该类的对象。

而不是在构造函数中执行此操作,您可以尝试这样的

$('#toggle li:has(.dropdown-menu)').on('click', function (event) {
if ($(event.target).parents('.dropdown-menu').length > 0) {
    event.stopPropagation();
} else {
    event.preventDefault();
}
$(this).find('ul').slideToggle();
});

答案 1 :(得分:0)

您的程序中很可能会有一些逻辑主循环,例如

while(!quit) {
    // 1. ask if you want to add part time or full time employee
    // 2. ask proper questions
    // 3. call correct constructor
}

写这么小的伪代码算法应该是自我解释的,让你去。

第一步:呈现可供用户使用的选项并阅读用户输入 第二步:根据步骤1的用户输入执行动作 第三步:根据步骤1和2的结果最终调用适当的构造函数

答案 2 :(得分:0)

如果我理解你的问题(我真的不确定),你想在主方法中提示员工数据。

在这种情况下,我会使用循环并查询以下内容:

  • 员工姓名
  • 员工全职工作吗? (Y / N)
  • 如果是的话:工资是多少? (假设小时=无论全职员工每天工作)
  • 如果没有:多少小时? (也可能是小时工资)

然后使用该信息构造一个Employee对象(我不认为这里需要子类)。

答案 3 :(得分:0)

如果我收到你的问题,下面可能符合你的需要 -

首先创建通用Employee类 -

class Employee {

    private String name;
    private int workingHours;
    private final boolean IS_PART_TIME_EMP;

    public Employee(String name, int workingHours) {
        this.name = name;
        this.workingHours = workingHours;
        this.IS_PART_TIME_EMP = false;
    }

    public Employee(String name) {
        this.name = name;
        this.IS_PART_TIME_EMP = true;
    }

    public String getName() {
        return name;
    }

    public int getWorkingHours() {
        return workingHours;
    }

    public void setWorkingHours(int workingHours) {
        this.workingHours = workingHours;
    }

    public boolean isPartTimeEmployee() {
        return IS_PART_TIME_EMP;
    }
}

现在您可以根据自己的要求使用它。

Employee[] employees = new Employee[4];
employees[0] = new Employee("Jane", 26000);
employees[1] = new Employee("Jack");
employees[2] = new Employee("Lucy", 52000);
employees[3] = new Employee("Lenny");

Scanner sc = new Scanner(System.in);

for (Employee employee : employees) {
    if(employee.isPartTimeEmployee()) {
        System.out.println("Please enter working hours by " + employee.getName() + ": ");
        int numHours = sc.nextInt();
        employee.setWorkingHours(numHours);
    }
}