0

.txt ファイルを読み込もうとしています。5 行のテキストごとに、そのうちの 2 つから情報を取得し、それを Item というクラスに格納し、次の 5 行についても同じことを行います。

そして、5 行目ごとに、その Item オブジェクトを、Item オブジェクトのリンク リストを保持する Inventory という名前の一時オブジェクトに保存します。

次に、この一時データを関数に渡し、それに応じてマスター リストを更新します。

では、文字列トークナイザーを使用してこれを行うにはどうすればよいでしょうか? 私はすでに何かを実装しています。以下のコードはベアボーン/疑似コードです。コードには質問があります。それが私の主な質問です。

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)を意味するのかはわかりませんが、オブジェクトを削除したい場合は、 null 値を割り当てるか、デフォルトのコンストラクターを呼び出すことができますholdIt = new Type()。どちらの場合も、ガベージ コレクターは最終的に古いオブジェクトをメモリから消去します。

これがあなたが探していた答えでない場合は、あなたが達成したいことについてより多くの情報を提供してください.

于 2013-01-21T23:30:57.560 に答える