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