0

我正在尝试读取 .txt 文件。每 5 行文本我想从其中的两个中获取信息,并将其存储在一个名为 Item 的类中,然后对接下来的五行执行相同的操作。

在每 5 行之后,将该 Item 对象保存在一个名为 Inventory 的临时对象中,该对象包含一个 Item 对象的链接列表。

然后,我将此 temp 传递给相应更新主列表的函数。

那么我该如何使用字符串标记器来做到这一点呢?我已经实现了一些东西,下面的代码是准系统/伪代码。在代码中有一个问题,这是我的主要问题。

InvObject 有一个 Item 对象的链表。

代码:

        InvObject temp = new InvObject();

        int i = 0;
        Item holdIt = null;

        while (in.hasNextLine())
        {
            i %= 5;

            if(i == 3 || i == 4)
            {
                String line = in.nextLine();
                StringTokenizer tkner = new StringTokenizer(line);

                if(i == 3)
                {
                    int z = 0;
                    Item it = new Item();
                  while (tkner.hasMoreTokens())
                    {
                        String token = tkner.nextToken("$");
                        if(z == 1) // 2nd token of 3rd line is price
                            {it.pric = token;}
                        z++;
                    }
                    holdIt = it; // save item in a globaler variable
                }

                if(i == 4)
                {
                    int j = 0;
                    while (tkner.hasMoreTokens())
                    {
                        String token = tkner.nextToken("\t");
                        if(j == 2)
                            {holdIt.itemNum = token;}
                        j++;
                    }
                    temp.addItem(holdit);
                                delete(holdit);       //// Will this delete holdit from temps linked list?
                                                      /// Or does the linked list in temp copy the data to 
                                                      ///itself regardless of what happens to holdit
                    System.out.println(holdit.print());
                } 
            }
            i++;

        }
        in.close();
        UpdateItems(temp);
4

1 回答 1

0

我不确定您在这里要问什么,但是,根据您对代码的评论,答案是否定的,删除 java 中的对象不会对列表产生影响。

我不确定这delete(holdIt)意味着什么,如果你想删除对象,你可以为它分配一个空值或调用默认构造函数holdIt = new Type()。在这两种情况下,垃圾收集器最终都会从内存中删除旧对象。

如果这不是您正在寻找的答案,请提供有关您想要实现的目标的更多信息。

于 2013-01-21T23:30:57.560 回答