嵌套循环不迭代
本文关键字:迭代 嵌套循环 | 更新日期: 2023-09-27 18:11:45
在我的代码中,我有一个嵌套循环,它不迭代,除非if语句总是发生,无论什么条件。如果没有if语句,for循环中迭代循环的那部分代码将变得不可访问。无论我怎么尝试,我都无法让内循环迭代。
class Map
{
public int Width { get; set; }
public int Height { get; set; }
public Vector2[] positions = new Vector2[500*500];
private GroundVoxel[,] map = new GroundVoxel[500, 500];
private Vector2 voxelPosition = new Vector2(0,0);
private static int sizeX = 499, sizeY = 499, airLevel = 425;
private int positionX = 0, positionY = 0, vectorNumber = 0;
public Map()
{
}
public Vector2[] Initialize()
{
for (int i = 0; i <= sizeY; i++)
{
for (int j = 0; j <= sizeX; j++) <-- This does not iterate.
{
map[positionX, positionY] = new GroundVoxel(voxelPosition);
voxelPosition.X += 80;
positions[vectorNumber] = voxelPosition;
vectorNumber += 1;
if (j == sizeX) <-- This always executes even though j != sizeX.
{
break;
}
}
voxelPosition.Y += 80;
voxelPosition.X = 0;
}
return positions;
}
}
}
您必须使用完全限定名来引用静态类成员变量,如sizeX
和sizeY
。
这里有一篇关于该主题的文章。
希望这对你有帮助!
我想我们需要更多的代码。我已经将您的代码复制到基本的winforms测试应用程序中,并且我的两个循环都按照预期进行迭代。
我不熟悉XNA或什么是"VoxelPosition",但我认为你这里有一个潜伏的错误:
voxelPosition.X += 80;
positions[vectorNumber] = voxelPosition;
你只是将同一个指针存储在一个非常大的数组中——所有的项都指向同一个对象。
你需要在每次循环中声明另一个对象来存储单独的vector条目。
希望这有帮助?