如何在for循环中为数组赋值

时间:2013-01-31 11:14:04

标签: c# multidimensional-array

首次执行循环: 值已分配给PlaatSnoepArray[0,0] and PlaatSnoepArray[0,1]

第二次循环执行: 值已分配给PlaatSnoepArray[1,0] and PlaatSnoepArray[1,1] 并且PlaatSnoepArray[0,0]PlaatSnoepArray[0,1]的值设置为0.

第三次循环执行: 值已分配给PlaatSnoepArray[2,0]PlaatSnoepArray[2,1]。 并且PlaatSnoepArray[1,0]PlaatSnoepArray[1,1]的值设置为0

如何防止将值设置回0?

    static Random Rangen = new Random();
    static void PlaatsSnoep(int aantal)
    {

        for (int i = 0; i < aantal; i++)
        {

            int SnoepX = Rangen.Next(25, 94);
            int SnoepY = Rangen.Next(3, 23);
            Console.SetCursorPosition(SnoepX, SnoepY);
            Console.WriteLine("0");

            int[,] PlaatssnoepArray = new int[aantal,2];

            PlaatssnoepArray[i, 0] = SnoepX;
            PlaatssnoepArray[i, 1] = SnoepY;

        }

5 个答案:

答案 0 :(得分:1)

array循环之外创建for

    int[,] PlaatssnoepArray = new int[aantal,2];

    for (int i = 0; i < aantal; i++)
    {

        int SnoepX = Rangen.Next(25, 94);
        int SnoepY = Rangen.Next(3, 23);
        Console.SetCursorPosition(SnoepX, SnoepY);
        Console.WriteLine("0");

        PlaatssnoepArray[i, 0] = SnoepX;
        PlaatssnoepArray[i, 1] = SnoepY;

    }

答案 1 :(得分:1)

  

如何防止将值设置回0?

您需要在循环外移动PlaatssnoepArray的创建。目前,每次迭代都会分配给它自己的int[aantal,2]实例,该实例超出范围并在循环迭代结束后立即被抛弃。

int[,] PlaatssnoepArray = new int[aantal,2];
for (int i = 0; i < aantal; i++)
{
    // The rest of your code
}

答案 2 :(得分:1)

你的数组声明在循环内部,将其移到外面。

int[,] PlaatssnoepArray = new int[aantal,2];
for (int i = 0; i < aantal; i++)
    {
        int SnoepX = Rangen.Next(25, 94);
        int SnoepY = Rangen.Next(3, 23);
        Console.SetCursorPosition(SnoepX, SnoepY);
        Console.WriteLine("0");
        PlaatssnoepArray[i, 0] = SnoepX;
        PlaatssnoepArray[i, 1] = SnoepY;

    }

答案 3 :(得分:0)

将你的阵列从循环中移开..

答案 4 :(得分:0)

您正在循环中初始化数组,将其移出

static Random Rangen = new Random();
static void PlaatsSnoep(int aantal)
{

    int[,] PlaatssnoepArray = new int[aantal,2];
    for (int i = 0; i < aantal; i++)
    {

        int SnoepX = Rangen.Next(25, 94);
        int SnoepY = Rangen.Next(3, 23);
        Console.SetCursorPosition(SnoepX, SnoepY);
        Console.WriteLine("0");


        PlaatssnoepArray[i, 0] = SnoepX;
        PlaatssnoepArray[i, 1] = SnoepY;

    }
}

那么使用List<Point>()代替数组呢?

    List<Point> PlaatssnoepList = new List<Point>(); 
    for (int i = 0; i < aantal; i++)
    {
        Point p = new Point(Rangen.Next(25, 94), Rangen.Next(3, 23));
        Console.SetCursorPosition(p.X, p.Y);
        Console.WriteLine("0");
        PlaatssnoepList.Add(p)
    }