关于java:在循环中创建对象并使用其他对象作为类构造函数

Creating objects in a loop and using other objects as class constructors

我对 Java 很陌生。我必须创建一个模拟员工的程序。该员工有员工编号、名字和姓氏、由街道、城市和state组成的地址,以及由月、年和日组成的雇用日期。这是我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import javax.swing.JOptionPane;

public class AssignmentTen
{
    public static void main (String[] args)
    {
        System.out.println();
        int num = Integer.parseInt(args[0]);
        int eNumber;
        String input2;
        String input3;
        String input4;
        String input5;
        String input6;
        int input7;
        int input8;
        int input9;
        int input10;

        Employee[] employee = new Employee[num]
        for (int i = 0; i < num, i++)
        employee[i] = new Employee()

        input2 = getString ("Enter Employee First Name:");
        input3 = getString ("Enter Employee Last Name:");
        input4 = getString ("Enter Employee Street:");
        input5 = getString ("Enter Employee City:");
        input6 = getString ("Enter Employee State (Initials):");
        input7 = getInt ("Enter Employee Zip Code (5 Digits):");
        input8 = getInt ("Enter Employee Hire Month (MM):");
        input9 = getInt ("Enter Employee Hire Day (DD):");
        input10 = getInt ("Enter Employee Hire Year(YYYY):");

        eNumber = getInt ("Enter Employee Number:");
        System.out.println("#" + eNumber);

        Name n1 = new Name(input2, input3);
        System.out.println(n1.firstName +"" + n1.lastName);

        Address a1 = new Address (input4, input5, input6, input7);
        System.out.println(a1.eStreet +"" + a1.eCity +"" + a1.eState +"" + a1.eZipCode);

        Date d1 = new Date (input8, input9, input10);
        System.out.println("Hire Date:" + d1.month +"/" + d1.day +"/" + d1.year);
    }

    public static int getInt(String paramString)
    {
        String str = JOptionPane.showInputDialog(paramString);
        return Integer.parseInt(str);
    }

    public static String getString(String paramString)
    {
        String str = JOptionPane.showInputDialog(paramString);
        return str;
    }
}

class Employee
{

}

class Name
{
    String firstName;
    String lastName;

    Name(String first, String last)
    {
        firstName = first;
        lastName = last;
    }
}

class Address
{
    String eStreet;
    String eCity;
    String eState;
    int eZipCode;

    Address(String street, String city, String state, int zipCode)
    {
        eStreet = street;
        eCity = city;
        eState = state;
        eZipCode = zipCode;
    }
}

class Date
{
    int month;
    int day;
    int year;

    Date(int eMonth, int eDay, int eYear)
    {
        month = eMonth;
        day = eDay;
        year = eYear;
    }
}

如何让 Employee 类使用 Name、Address 和 Date 类作为构造函数来将所有员工信息存储在一个对象中?此外,我的程序中需要有一个单独的 Employee、Name、Address 和 Date 类。另外,如何创建一个 for 循环来创建数量等于 num 整数(从命令行输入)的员工对象,以便每个对象都有自己的名称、日期和地址?

我知道这段代码可能不会编译,我只需要完成它。


Employee 有一个地址、一个姓名和一个雇用日期,因此您必须声明类型为 Address、Name 和 Date 的实例变量。然后您可以编写一个构造函数,将 Address、Name 和 Date 作为构造函数参数并将它们分配给员工的实例变量

1
2
3
4
5
6
7
8
9
10
Class Employee{
    private Name name;
    private Address address;
    private Date hireDate;
    public Employee(Name name,Address address,Date hireDate){
           this.name = name;
           this.address = address;
           this.hireDate = hireDate;
        }
}

for 循环

1
2
3
4
5
6
7
8
Employee[] employees = new Employee[noOfEmployees]

for(int i = 0; i < noOfEmployees; i++){
    Name name = new  Name(String first, String last);
    Address address = new Address(String street, String city, String state, int zipCode);
    Date hireDate = new  Date(int eMonth, int eDay, int eYear);
    employees[i] = new Employee(name,address,hireDate);
}

其中 noOfEmployees 是您要创建的员工数量。
并且您可以使用 java\\ 的内置日期类 java.util.Date 作为hireDate.


您需要为您的 Employee 类创建一个非默认构造函数,并通过创建匹配的实例变量来允许您的 NameAddressDate 参数与之关联。

(在下面的代码中,您还必须为每个字段创建访问器方法)

1
2
3
4
5
6
7
8
9
10
11
12
13
class Employee
{
  private Name name;
  private Address address;
  private Date date;

  public Employee(Name name, Address address, Date date)
  {
    this.name = name;
    this.address = address;
    this.date = date;
  }
}