2

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

 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[] Stock;它一直告诉我它找不到InventoryItem。我认为我基本上可以将这个类用作数组。我认为我在问正确的问题,但我是新手,所以请多多包涵。顺便说一句,这个测试示例不起作用。然而,这是最初的测试示例。

 public static void main(String[] args) {
   InventoryItem Stock = new InventoryItem("TEST", 123456789, 999, 1.25);
    Stock.output();

加载那一行可以正常工作,但我正在努力让用户输入数组的每个部分以加载它。这有意义还是我听起来像个白痴?我对术语不太了解,但我正在努力。任何帮助,将不胜感激。

4

3 回答 3

2
InventoryItem[] Stock;
InventoryItem[10] = Stock;

应该

InventoryItem[] Stock = new InventoryItem[10];

另外,我看到你这样做(这可能不会导致问题,但仅供参考,以防你不知道。

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

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

于 2013-11-10T15:05:03.970 回答
1

用于new为 InventoryItem 的 Stock 数组分配空间

InventoryItem[] Stock = new InventoryItem[10];

另外,我注意到您正在使用数组索引 1 向您的 Stock 添加一些内容:

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

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

有关更多信息,请参阅Oracle 的 Java 数组教程。

于 2013-11-10T15:05:20.550 回答
1

使用它而不是括号:

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

添加项目:

Stock.add(new InventoryItem(/*parameters*/);

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

于 2013-11-10T15:06:24.037 回答