我是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("");
}
答案 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++;
}