如何在C#中使用while循环创建多维数组

时间:2017-06-06 09:39:12

标签: c# .net

我是c#的初学者,我必须使用while循环编写一个多维数组。我只是无法通过它。到目前为止,我已经使用嵌套for循环制作了我真正需要的东西但是无法将其转换为while循环。任何帮助将不胜感激。

int[][] tab = new int[4][];
tab[0] = new int[4];
tab[1] = new int[3];
tab[2] = new int[2];
tab[3] = new int[1];

int num = 1;

for(int i = 0; i < tab.Length; i++)
{
    for(int j = 0; j < tab[i].Length; j++)
    {
        tab[i][j] = num++;
    }
}

for(int i = 0; i < tab.Length; i++)
{
    Console.Write("tab[{0}] = ", i);
    for(int j = 0; j < tab[i].Length; j++)
    {
        Console.Write("{0} ", tab[i][j]);
    }
    Console.WriteLine(""); 
}

3 个答案:

答案 0 :(得分:3)

for循环是一个装扮好的while循环,你已经非常接近了。

考虑

for(a; b; c) { ...; }

等于(为了简洁而没有中断/继续标签)

 { a; while (b) { ...; c; } }

您应该可以轻松完成此转换。但我认为老师也应该接受带有for循环的代码,因为它在功能上是一个while循环。

现在您的作业中可能存在其他约束,例如允许嵌套循环或[,][][]样式多维数组(同样,功能相同,不同的C#符号用于稍微不同的功能集)

答案 1 :(得分:0)

           int[][] tab = new int[4][];
            tab[0] = new int[4];
            tab[1] = new int[3];
            tab[2] = new int[2];
            tab[3] = new int[1];

            int num = 1;

            int ai = 0;
            int bj = 0;

            while (ai < tab.Length) {
                bj = 0;
                while (bj < tab[ai].Length) {
                    tab[ai][bj] = num++;
                    bj++;
                }
                ai++;
            }

            for (int i = 0; i < tab.Length; i++)
            {
                Console.Write("tab[{0}] = ", i);
                for (int j = 0; j < tab[i].Length; j++)
                {
                    Console.Write("{0} ", tab[i][j]);
                }
                Console.WriteLine("");
            }

只需移除 for 循环,然后添加 循环。

答案 2 :(得分:0)

更新了删除冗余控制台写行循环的答案

while (ai < tab.Length)
{
    bj = 0;
    Console.Write("tab[{0}] = ", ai);
    while (bj < tab[ai].Length)
    {
        tab[ai][bj] = num++;
        Console.Write("{0} ", tab[ai][bj]);
        bj++;
    }
    Console.WriteLine("");
    ai++;
}