-1

文字列を含む単純な配列contentHouseOne[]を使用します。しかし、Do / Whileループでは、機能していません。新しいオブジェクトを作成するときに、コードが文字列であることを理解していないようです!?以下に示すように文字列をハードコーディングすると機能します。ヘルプが高く評価されています!ありがとう!

これは機能していません:

listHouseParts.Add(new HousePart(content, contentHouseOne[i], newPosition));

しかし、これは機能します:

 listHouseParts.Add(new HousePart(content, "100x100", newPosition));

編集:

配列を宣言するためのコードを次に示します

string[] contentHouseOne = new string[] { "ruta100x100Red", 
                                          "ruta100x100Grey", 
                                          "ruta100x100Green", 
                                          "ruta100x100Yellow", 
                                          "ruta100x100Blue" };

bool[,] occupiedPositions = new bool[500,500];

すべてのグリッド位置をfalseに設定するためのコードを次に示します。

for (int i = 0; i < gridCol; i++)
    for (int ii = 0; ii < gridRow; ii++)
        occupiedPositions[i, ii] = false;

そして最後にここに私が問題を抱えているコードがあります

int i = 0;
do
{
    Vector2 newPosition = NewRandomPosition;
    if (occupiedPositions[(int)newPosition.X, (int)newPosition.Y] == false)
    {
        listHouseParts.Add(new HousePart(content, 
                                         contentHouseOne[i], newPosition));
        occupiedPositions[(int)newPosition.X, (int)newPosition.Y] = true;
        i++;
    }
}
while (i <= 5);
4

2 に答える 2

4

文字列配列には 5 つの要素が含まれています。

string[] contentHouseOne = new string[] { "ruta100x100Red",
                                          "ruta100x100Grey", 
                                          "ruta100x100Green", 
                                          "ruta100x100Yellow", 
                                          "ruta100x100Blue" };

ただし、実行中の変数が 5 より大きいwhile場合、ループは終了しますi

while (i <= 5);

contentHouseOneインデックス 5 の 6 番目の要素が定義されていないため、 でIndexOutOfBounds 例外が発生します。while 条件を に変更する必要があります(i < 5)

于 2012-07-30T06:53:23.273 に答える
0

これを試して、少なくとも空かどうかを確認してください

    HousePart housePart = new HousePart();
    housePart.Content = content;

    if (!string.IsNullOrEmpty(contentHouseOne[i]))
        housePart.ContentHouseOne = contentHouseOne[i];
    else
        housePart.ContentHouseOne = string.Empty;

    housePart.NewPosition = newPosition;

    listHouseParts.Add(housePart);
于 2012-07-30T06:51:19.803 に答える