关于具有数组对象的构造函数的非常简单的问题

时间:2014-09-09 07:27:17

标签: java arrays constructor

我写了一个名为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;
}

以及所有变量的accessor和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]的编译错误,并说数组需要,但是找到了菜单。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您感到困惑的部分原因是因为您有3种不同的菜单'在你的程序里面。你有Menu个班级。您有 menu ,即数组,它位于Menu类的任何实例中。最后,你有 menu 你在main方法中创建的对象。

在您的主要方法中,当您执行菜单 [1]时,您将告诉Java"取菜单,该对象,然后尝试得到它的第一个指标"。但是,由于main中的菜单不是一个数组,因此Java不知道该做什么并拒绝编译。

相反,你想找到菜单,数组,菜单,对象,并得到它的指示:

 System.out.print("The name is: " + menu.menu[1].getName());

因此,总而言之,您有一个名为 menu Menu类的实例,其中包含一个名为 menu 的数组!

我认为这里的主要内容是始终确保使用清晰明确的变量名称以避免混淆:)

答案 1 :(得分:0)

你有两个变量calles menu。这是好的,因为它们位于不同的范围内(一个在main,一个是class Menu的成员),但也许是混淆来自的地方。在类Menu中,它是一个数组,但在main方法中,它是一个简单的变量。因此,如果要打印出数组中的第二个元素(menu[1]),则必须在Menu类中的某个位置执行此操作。 (或者创建一个getter来从main方法访问它。)