繁体   English   中英

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

[英]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());

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

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

你有两个变量卡列斯menu 没关系,因为它们在不同的范围内(一个在main ,一个在class Menu的成员),但这也许就是造成混乱的地方。 Menu类中,它是一个数组,但是在您的main方法中,它是一个简单的变量。 因此,如果要打印出数组中的第二个元素(即menu[1] ),则必须在Menu类的某个位置进行打印。 (或创建一个getter以从main方法访问它)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM