Java 使用类存储信息并调用该类来构建数组

Java 使用类存储信息并调用该类来构建数组,java,arrays,Java,Arrays,这是我的问题。我正在使用定义的类构建一个数组。该类如下所示: class InventoryItem { String ItemName; int ItemNumber; int InStock; double UnitPrice; double InventoryValue; public InventoryItem(String ItemName, int ItemNumber, int InStock, double UnitPrice

这是我的问题。我正在使用定义的类构建一个数组。该类如下所示:

 class InventoryItem {

    String ItemName;
    int ItemNumber;
    int InStock;
    double UnitPrice;
    double InventoryValue;

    public InventoryItem(String ItemName, int ItemNumber, int InStock, double UnitPrice) {
        this.ItemName = ItemName;
        this.ItemNumber = ItemNumber;
        this.InStock = InStock;
        this.UnitPrice = UnitPrice;
        this.InventoryValue = UnitPrice * InStock;

    }

    public void output() {
        System.out.println("Item Name = " + ItemName);
        System.out.println("Item Number = " + ItemNumber);
        System.out.println("In Stock = " + InStock);
        System.out.println("Item Price = $" + UnitPrice);
        System.out.println("Item value of stocked items = $" + InventoryValue);

    }
}
当我用一个测试示例加载它时,它工作得很好

但是,当我尝试使用这个类构建数组时,出现了一些问题

import java.util.*;

public class Inventory {

    public static void main(String[] args) {
        Scanner user_input = new Scanner(System.in);
        System.out.println("Welcome to the inventory program\n")
        System.out.println("This will help keep track of your inventory of office supplies");

        InventoryItem[] Stock;
        InventoryItem[10] = Stock;
        Stock[1] = new InventoryItem("Test", 123456, 500, .99);
        System.out.println("Please enter the Item Nmae");
        ItemName = user_input.nextline();
我遇到的问题是它不喜欢
InventoryItem[]股票
它一直告诉我它找不到
InventoryItem
。我想我基本上可以使用这个类作为数组。我想我问的问题是对的,但我对这一点还不熟悉,所以请容忍我。顺便说一句,这个测试示例不起作用。然而,这是最初的测试示例

 public static void main(String[] args) {
   InventoryItem Stock = new InventoryItem("TEST", 123456789, 999, 1.25);
    Stock.output();
加载这一行很好,但我正在努力让用户输入数组的每个部分,以便加载它。这有意义吗?还是我听起来像个白痴?我对术语不是很在行,但我正在努力。任何帮助都将不胜感激

InventoryItem[] Stock;
InventoryItem[10] = Stock;
应该是

InventoryItem[] Stock = new InventoryItem[10];
此外,我看到你这样做(这可能不会造成问题,但仅供参考,以防你不知道)

 Stock[1] = new InventoryItem("Test", 123456, 500, .99);
数组的索引是从零开始的,这意味着从0开始。因此,如果您试图使用上面的代码访问第一个索引,那么实际上您正在访问第二个索引

应该是

InventoryItem[] Stock = new InventoryItem[10];
此外,我看到你这样做(这可能不会造成问题,但仅供参考,以防你不知道)

 Stock[1] = new InventoryItem("Test", 123456, 500, .99);

数组的索引是从零开始的,这意味着从0开始。因此,如果您试图使用上面的代码访问第一个索引,您实际上是在访问第二个索引。

使用
new
为您的InventoryItem库存数组分配空间

InventoryItem[] Stock = new InventoryItem[10];
另外,我注意到您正在使用数组索引1向您的股票中添加一些内容:

Stock[1]=新的库存项目(“测试”,123456500.99);

这很好,但是如果您希望它位于第一个位置,请知道Java数组是基于零的


有关更多信息,请参阅。

使用
new
为InventoryItem的库存数组分配空间

InventoryItem[] Stock = new InventoryItem[10];
另外,我注意到您正在使用数组索引1向您的股票中添加一些内容:

Stock[1]=新的库存项目(“测试”,123456500.99);

这很好,但是如果您希望它位于第一个位置,请知道Java数组是基于零的


有关更多信息,请参阅。

使用此选项而不是括号:

ArrayList<InventoryItem> Stock = new ArrayList<InventoryItem>();

您可以找到您可以使用的其他方法

使用此方法代替括号:

ArrayList<InventoryItem> Stock = new ArrayList<InventoryItem>();

如果找不到
InventoryItem
,您可以找到您可以使用的其余方法,可能是
InventoryItem
位于错误的目录中,或者需要导入。那么
InventoryItem
文件在哪里?另外,将类
公开是一种很好的做法,除非您有充分的理由不公开还可能指出
.nextline();
不是
扫描仪
方法,而是
.nextline()
是(在
ItemName=user\u input.nextline();
)。此外,
ItemName
尚未声明,因此您可能希望将其更改为
String ItemName=…
,除非您在其他地方声明了它。否则,程序不知道
ItemName
是什么,也不知道它是一个变量并且将存储
字符串。您似乎也丢失了g在
main()的第3行的“欢迎”消息末尾加一个分号
。如果它找不到
InventoryItem
,可能是
InventoryItem
在错误的目录中,或者需要导入。那么
InventoryItem
文件在哪里?另外,最好将类
公开,除非你有充分的理由不公开。我还可以指出
.nextline();
不是
扫描仪
方法,而是
.nextLine()
是(在
ItemName=user\u input.nextLine();
)。此外,
ItemName
尚未声明,因此您可能希望将其更改为
String ItemName=…
,除非您在其他地方声明了它。否则,程序不知道
ItemName
是什么,也不知道它是一个变量并且将存储
字符串。您似乎也丢失了g在
main()
的第3行的“欢迎”消息末尾加上分号。