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行的“欢迎”消息末尾加上分号。