3

我应该做以下事情:

使用名为 generateEmployees() 的静态方法编写一个 Java 应用程序(客户端)程序,该方法返回 10 种不同类型的 Employee 对象的随机列表。您可以使用数组或 ArrayList 来存储将返回的员工对象。使用 for 循环用一些随机数据随机填充不同类型的员工对象。您可能会想到一个值范围,例如 1 - 4。如果随机值为 1,则创建一个包含一些随机生成的数据的 HourlyEmployee 对象,如果为 2,则创建一个包含一些随机数据的 SalariedEmployee 对象等等。我会让你的聪明才智来生成和填充这些不同的 Employee 对象。随着这些对象的生成,将它们添加到您的数据结构(您正在使用的数组或 ArrayList)中。最后,该方法返回此数据结构。

在同一个应用程序类中,实现 main() 方法。调用 generateEmployees() 静态方法并使用 for 循环在终端窗口上打印每个员工的详细信息以及他们的收入。

我的 generateEmployees() 静态方法如下(它可能不正确......而且,数据不是随机生成的,因为我不确定如何做到这一点,至少就名字和姓氏而言担心。):

public static Employee[] generateEmployees()
{
    Employee[] employees = new Employee[10];
    int randomNum = 0;
    
    for (int i = 0; i < 10; i++)
    {
        Random random = new Random();
        randomNum = random.nextInt(4) + 1;
         
         switch (randomNum)
         {
            case 0:
                employees[i] = new SalariedEmployee("Bri", "Gefroh", 123, 1000);
                break;
            case 1:
                employees[i] = new HourlyEmployee("Bri", "Gefroh", 123, 12.50, 10);
                break;
            case 2:
                employees[i] = new CommissionEmployee("Bri", "Gefroh", 123, 10000, 0.05);
                break;
            case 3:
                employees[i] = new BasePlusCommissionEmployee("Bri", "Gefroh", 123, 10000, 0.05, 2500);
                break;
         }
    }
    
    return employees;
}

我将如何调用此方法并在 main() 方法中使用它?这四种类型的员工中的每一种都是 Employee 类的子类,并且每个子类都有自己的 toString() 方法,我相信这是我应该输出的。

4

4 回答 4

5

静态方法是类方法,而不是实例方法。它是在类上调用的,而不是类的实例。不同之处在于您可以在没有实例的情况下调用静态方法。

Employee.doSomething();

对比

Employee employee = new Employee();
employee.doSomethingElse();

因此,如果您的 generateEmployees() 方法与您的 main 方法在同一个类中,那么您只需要

 generateEmployees();

否则你需要做

 Employee.generateEmployees();

(如果 Employee 类包含 generateEmployees()

于 2013-04-27T02:41:02.400 回答
0

就像 Ash 说的,但是如果你需要处理记录,这里没有理由引入额外的变量只是做

 public static void main(String[] args)
 {
      for(Employee employee: generateEmployees())
         print(employee); // define static print somewhere too

 }
于 2013-04-27T05:22:11.190 回答
0

如果该方法在同一个类中,您应该能够像任何其他方法一样调用它:

public static void main(String[] args)
{
    Employee[] employees = generateEmployees();

    // TODO: loop through and print out...
}

由于maingenerateEmployees都是静态的,它应该可以工作。(如果generateEmployees是非静态的,你需要先创建一个类的实例)。

我建议有一个包含“名称”的常量字符串数组,并使用随机数生成索引。这应该有助于随机化名称。

于 2013-04-27T02:39:54.523 回答
0

这是一个静态方法,所以......它不需要在实例化对象的上下文中访问。你知道,你可以从你的 public static void main(...) 方法中调用它。如果包含您的 main() 方法的类名为 Employee,那么...

Employee.generateEmployees(); 

会成功的。

于 2013-04-27T02:40:12.460 回答