【问题标题】:Create an array of objects创建对象数组
【发布时间】:2026-01-05 02:35:01
【问题描述】:

我对 java 还很陌生,但我了解编程概念。我正在做一个交易游戏。我希望能够在 .txt 文件中列出我想要的每个项目,并阅读列表,为每个项目创建一个 Item() 对象的实例。我知道如何读取输入,然后将它们排序到一个难以计算的数组中。

数组是正确的方法吗?或者有其他方式来处理我的商品信息?

public class Item {
    File itemList = new File("Items.txt");
    ArrayList<Item> Items = new ArrayList<>();

    String line = "";
    String name = "";
    int price = 0;
    int ID = 0;

    public void setItem (String theName, int thePrice, int theID)
    {
    name = theName;
    price = thePrice;
    ID = theID;
    }
    public void Initialize () throws FileNotFoundException
    {
        Scanner scan = new Scanner(itemList);
        do
        {
            do
            {

                line = scan.nextLine();
                while (!line.startsWith("#")) {line = scan.nextLine();}
                if (line.matches(".*\\d+.*"))
                {
                    price = Integer.parseInt(line);
                }else
                {
                    name = line;
                }
            }while(!line.equals(""));
            Items.add(new Item());
            ID++;
        }while (!line.equals("end"));
    }
}

【问题讨论】:

  • 你可以为你的 Item 对象寻找一个数组。读取输入后,您必须将值设置到新 Item 对象的变量中并将其附加到数组中。
  • Java 方法和变量名(按照惯例)以小写字母开头。此外,您的Initialize 方法可能应该是staticItems 列表和itemList 变量也应该如此。

标签: java arrays file object


【解决方案1】:

有几种方法可以存储您的项目,也许最简单的方法是使用数组列表。

ArrayList<Items> items = new ArrayList<Items>();

并假设您使用输入数据创建新项目:

/*This goes in a loop where you read in currentInputData*/
items.add(new Item(currentInputData));

有关操作 ArrayList 的更多信息,请参阅 javadoc:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

【讨论】:

  • 谢谢你的帮助,我试试看。
  • 但是你不能直接将数据传递给一个类,对吧?数组列表不需要也运行我的构造函数吗?
  • 如果我尝试将变量传递到新项目中,我会收到错误
  • 首先,让你的列表静态化,它属于类而不是反对。其次,当然,当您向列表中添加新项目时,您必须在您的案例中提供每个参数(名称价格 ID)。初始化方法也应该是静态的,项目对象不需要这个方法。使其成为静态意味着它仅属于该类。您可以访问像 ClassName.method() 或 ClassName.variable 这样的静态成员。