用java初始化多个类对象的数组



我需要使用一个构造函数来初始化一个类对象数组,但我无法找出使其工作的语法。我需要包括一个字符串和五个int。以下是我的代码中的一些必要细节。

public Event(String n, int g)
{
eventNumber=n;
guests=g;
}

从";Event.java";

public DinnerEvent(String number, int guests, int entree, int sideOne, int sideTwo, int dessert)
{
super(number, guests);
entreeID=entree;
sideOneID=sideOne;
sideTwoID=sideTwo;
dessertID=dessert;
}

从";DinnerEvent.java";,扩展Event.java.

for(int x=0; x<EVENTS_QUANTITY; ++x)
{
String n;
int g, e, s1, s2, d;
Scanner input=new Scanner(System.in);
System.out.print("Enter event number, number of guests, and ID of entree, two sides, and a dessert.");
nums[x]=input.nextLine();
ints[x][0]=input.nextInt();
ints[x][1]=input.nextInt();
ints[x][2]=input.nextInt();
ints[x][3]=input.nextInt();
ints[x][4]=input.nextInt();
}

DinnerEvent[][] events={ {nums[0], ints[0][0], ints[0][1], ints[0][2], ints[0][3], ints[0][4]},
{nums[1], ints[1][0], ints[1][1], ints[1][2], ints[1][3], ints[1][4]},
{nums[2], ints[2][0], ints[2][1], ints[2][2], ints[2][3], ints[2][4]},
{nums[3], ints[3][0], ints[3][1], ints[3][2], ints[3][3], ints[3][4]}};

从";DinnerEventDemo.java";。这里的代码非常混乱,因为我只是尝试了不同的方法来让它发挥作用。到目前为止,没有运气。指令特别要求使用DinnerEvent对象数组并通过使用DinnerEvent.java中的构造函数来完成。如果需要,我可以发送更多的周围代码。如果在这些摘录中没有声明变量,那么它是预先声明的
这是我第一次在这里发帖,所以如果我的格式不正确或我没有遵守这个网站上典型的发帖礼仪,我深表歉意。感谢您的帮助。

要创建一个新的晚餐事件,请调用构造函数并传递您想要的参数:

DinnerEvent myDinner = new DinnerEvent("One", 5, 3, 4, 5, 6);

变量myDinner现在包含DinnerEvent类的一个实例。我传递了一些随机参数,因为我不知道代码的确切语义。我假设您在大多数参数中使用了整数,因为它们对应于菜单的一个条目。

如果要创建DinnerEvent的多个实例,则需要定义多个变量:

DinnerEvent myFirstDinner = new DinnerEvent("One", 5, 3, 4, 5, 6);
DinnerEvent mySecondDinner = new DinnerEvent("Two", 2, 1, 2, 3, 7);

此外,您可以创建DinnerEvent实例的集合,例如作为数组。然而,现在,您需要一个循环来迭代该数组中的每个项,以单独初始化相应的实例:

DinnerEvent[] dinners = new DinnerEvent[4]; // Array of four instances
// Initialize array elements in a loop
for (int i = 0; i < dinners.length; ++i) {
dinners[i] = new DinnerEvent(i + ". Dinner", 1, 2, 3, 4, 5);
}

您最终将得到一个由四个DinnerEvent实例组成的数组。我们使用了一个循环进行初始化,但您也可以单独初始化它们。这甚至可能更有意义,因为你很可能想要设置有意义的参数:

DinnerEvent[] dinners = new DinnerEvent[2]; // Array of two instances
// Initialize instances individually
dinners[0] = new DinnerEvent("First Dinner", 2, 2, 3, 4, 5);
dinners[1] = new DinnerEvent("Second Dinner", 7, 8, 3, 41, 45);

现在,您将得到一个由两个元素组成的数组,这两个元素都具有各自的属性。您调用构造函数两次,然后传入所需的参数。

假设scanner值是构造函数的参数,您可以执行类似的操作

DinnerEvent[] events = new DinnerEvent[EVENTS_QUANTITY];
for(int x=0; x<EVENTS_QUANTITY; ++x)
{
String n;
int g, e, s1, s2, d;
Scanner input=new Scanner(System.in);
System.out.print("Enter event number, number of guests, and ID of entree, two sides, and a dessert.");
n=input.nextLine();
g=input.nextInt();
e=input.nextInt();
s1=input.nextInt();
s2=input.nextInt();
d=input.nextInt();
events[x] = new DinnerEvent(n, g, e, s1, s2, d);
}

在开始构建第一个事件之前,不必收集所有数据。

Scanner input=new Scanner(System.in);
DinnerEvent[] dinnerEvents = new DinnerEvent[EVENTS_QUANTITY];
for(int index=0; index<dinnerEvents.length; ++index) {
System.out.print("Enter event number, number of guests, and ID of entree, two sides, and a dessert.");
dinnerEvents[x] = new DinnerEvent(
input.next(),
input.nextInt(),
input.nextInt(),
input.nextInt(),
input.nextInt(),
input.nextInt());
}

最新更新