1

宿題のために、2 つの ArrayList の Intersection マージをプログラムする必要があります。次のコードを使用して実行しました

    public void Intersection()
    {
        foreach (object obj1 in Developed)
        {
            Apps xApp = (Apps)obj1;
            foreach (object obj2 in DPloyed)
            {
                Apps yApp = (Apps)obj2;
                if (xApp.CompareName(yApp) == 0)
                {
                    Inter.Add(yApp);
                }
            }
        }

    }

while ループを使用するのではなく実装したいのですが、次のコードではリスト内の要素が欠落しているようです。最初の要素を新しい共通部分リストに入れますが、developed の長さが 1 要素から 5 要素以上に増加すると、新しい要素は追加されません。

    public void Intersection()
    {
        int i = 0;
        int j = 0;
        while (i < Developed.Count && j < DPloyed.Count)
        {
            Apps curA = (Apps)Developed[i];
            Apps curB = (Apps)DPloyed[j];
            if (curA.CompareName(curB) == 0)
            {
                Inter.Add(curA);
                i++;
                j++;
            }
            else if (curA.CompareName(curB) < 0)
            {
                i++;
            }
            else
                j++;
        }
    }

while ループが機能しない理由についてのヘルプをいただければ幸いです。

ありがとう

4

2 に答える 2

1

これを行う

while (i < Developed.Count || j < DPloyed.Count)

両方のリストのカウントが異なる可能性があるためです。

取得しないように、インデックスのループ内に追加のチェックを入れる必要がありますIndex out of Range Exception

于 2013-06-09T12:02:25.903 に答える
0

マージの実際のコードには問題はありませんでした。比較メソッドで問題が見つかりました。

于 2013-06-10T08:26:20.763 に答える