[英]Very simple Q about constructors with an array object
我写了一个叫做MenuItem
的类,其中包括:
private String name;
private String description;
private double price;
public MenuItem(String name, String description, double price)
{
this.name = name;
this.description = description;
this.price = price;
}
以及所有变量的访问器和mutator方法,以及另一个名为Menu
类,其中包括构造函数:
public Menu()
{
menu = new MenuItem[50];
}
在我的主要方法中,我写道:
Menu menu = new Menu();
试图创建一个名为menu的Menu
数组,其中包含50个MenuItem
对象。 但是我知道我做错了,因为当我尝试引用数组中的对象之一时,即
System.out.print("The name of this item is " + menu[1].getName());
我收到一个指向菜单[1]的编译错误,并说需要数组,但是找到了菜单。
我该如何解决?
您感到困惑的部分原因是因为您的程序中现在有3个不同的“菜单”。 您有Menu
,该类。 您有menu数组,它位于Menu
类的任何实例内。 最后,您可以在主方法内部创建菜单对象。
在您的主要方法中,执行菜单 [1]时,您要告诉Java“获取menu ,对象,然后尝试获取它的第一个索引”。 但是,由于main内部的菜单不是数组,因此Java将不知道该怎么做并拒绝编译。
相反,您想要查找menu ,数组, menu内部的对象,并获得该值的索引:
System.out.print("The name is: " + menu.menu[1].getName());
因此,总而言之,您有一个名为menu的Menu
类实例,该实例包含一个名为menu的数组!
我想这里的主要要点是始终确保使用清晰明确的变量名以避免混淆:)
你有两个变量卡列斯menu
。 没关系,因为它们在不同的范围内(一个在main
,一个在class Menu
的成员),但这也许就是造成混乱的地方。 在Menu
类中,它是一个数组,但是在您的main
方法中,它是一个简单的变量。 因此,如果要打印出数组中的第二个元素(即menu[1]
),则必须在Menu
类的某个位置进行打印。 (或创建一个getter以从main
方法访问它)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.