Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java目标/选择类/对象-混乱(抱歉标题不好)_Java_Class_Object_Inheritance_Methods - Fatal编程技术网

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

Java目标/选择类/对象-混乱(抱歉标题不好),java,class,object,inheritance,methods,Java,Class,Object,Inheritance,Methods,我下面的内容是通过打印一些员工详细信息以及周/月工资(视情况而定)来产生所需的结果 然而,我明白我不应该像以前那样在构造函数中输入数据 我只需要为“兼职员工”提示工时值,而不是我这样做的方式 我测试了For-Each循环、增强For循环和使用instanceOf操作符 如果我能得到一些指导/提示或示例,说明如何在构造函数中完成当前正在做的事情,但是在TestEmployee类中,那将非常好 大多数情况下,我甚至不知道如何描述我试图实现的目标。这在一定程度上阻碍了谷歌搜索。(如果有更好的标题,也会

我下面的内容是通过打印一些员工详细信息以及周/月工资(视情况而定)来产生所需的结果

然而,我明白我不应该像以前那样在构造函数中输入数据

我只需要为“兼职员工”提示工时值,而不是我这样做的方式

我测试了For-Each循环、增强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();
        }

    }
}

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

您可以尝试这样的方法,而不是在构造函数中这样做

employees[1] = new PartTimeEmployee("Jack");
System.out.println("Please enter the number of hours worked by " + employees[1].getName()+ ": ");
numHours = keyboard.nextInt();
employees[1].setHours(numHours);

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

您可以尝试这样的方法,而不是在构造函数中这样做

employees[1] = new PartTimeEmployee("Jack");
System.out.println("Please enter the number of hours worked by " + employees[1].getName()+ ": ");
numHours = keyboard.nextInt();
employees[1].setHours(numHours);

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

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步的结果,最后调用适当的构造函数。您的程序中很可能会有一些逻辑主循环,如

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步的结果,最后调用适当的构造函数

如果我正确理解了您的问题(我真的不确定),您希望在main方法中提示输入员工数据

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

  • 雇员姓名
  • 该员工是否全职工作?(是/否)
  • 如果是:工资是多少?(假设小时数=全职员工每天工作的时间)
  • 如果没有:多少小时?(可能还有小时工资)

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

如果我正确理解了您的问题(我真的不确定),您希望在main方法中提示输入Employee数据

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

  • 雇员姓名
  • 该员工是否全职工作?(是/否)
  • 如果是:工资是多少?(假设小时数=全职员工每天工作的时间)
  • 如果没有:多少小时?(可能还有小时工资)

然后使用这些信息构造一个
Employee
对象(我看不出这里有任何子类的需要)。

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

首先,创建泛型
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);
    }
}

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

首先,创建泛型
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);
    }
}

在构造函数中接受用户输入对我来说真的很奇怪。除此之外,我可能会使用一个普通类,并按小时区分全职和兼职(我还怀疑兼职员工确实能挣点钱。)。在构造函数中输入用户信息对我来说真的很奇怪。除此之外,我可能会使用一个普通类,并按小时区分全职和兼职(我也怀疑兼职员工确实能挣点钱。)。这正是我试图实现的目标。我已经有了一个通用的Employee类(也是PartTimeEmployee和FullTimeEmployee类,应该在前面提到)。我从来没有想过在这里对兼职员工使用布尔值。而且For循环也很棒!非常感谢!你让我高兴极了!:)这正是我试图实现的目标。我已经有了一个通用的Employee类(也是PartTimeEmployee和FullTimeEmployee类,应该在前面提到)。我从来没有想过在这里对兼职员工使用布尔值。而且For循环也很棒!非常感谢!你让我高兴极了!:)