Java 关于带数组对象的构造函数的非常简单的Q

Java 关于带数组对象的构造函数的非常简单的Q,java,arrays,constructor,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; } 以及所

我编写了一个名为
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的
菜单
数组,其中包含50个
菜单项
对象。但是我知道我做错了什么,因为当我试图引用数组中的一个对象时,即

System.out.print("The name of this item is " + menu[1].getName());
我得到一个编译错误,它指向菜单[1],并说需要数组,但找到了菜单。


如何修复此问题?

您感到困惑的部分原因是因为您的程序中现在有3个不同的“菜单”。您有
菜单
,该类。您有菜单,数组,它位于
菜单
类的任何实例中。最后,您有一个菜单对象,它是您在主方法中创建的

在main方法中,当您执行menu[1]时,您告诉Java“获取menu,对象,并尝试获取它的第一个标记”。然而,由于main中的菜单不是数组,Java将不知道该做什么,并拒绝编译

相反,您需要查找菜单、数组、内部菜单、对象,并获取其标识:

 System.out.print("The name is: " + menu.menu[1].getName());
总之,您有一个名为Menu的
Menu
类的实例,它包含一个名为Menu的数组


我想这里的主要要点是始终确保使用清晰明确的变量名,以避免混淆:)

您有两个变量被称为
菜单。这是可以的,因为它们在不同的范围内(一个在
中,一个是
类菜单的成员),但可能这就是混淆的原因。在类
菜单中,它是一个数组,但在
main方法中,它是一个简单的变量。因此,如果要打印数组中的第二个元素(即
菜单[1]
),必须在
菜单
类中的某个位置执行此操作。(或者创建一个getter,从
main
方法访问它)。

这个System.out.println在哪里?它在菜单类中吗?System.out.print在另一个类MenuOperations的主方法中。