我编写了这段C#,以帮助我理解嵌套for循环如何用于渲染二维数据。
这是输出的样子。
████
███
██
█
我想这样做,以便顶部的4个块在底部呈现,基本上以相反的顺序呈现,以便步骤提升。然而,控制台窗口只向下渲染,因此传统的思维方式是不对的。以下是我的代码。
static void Main(string[] args)
{
int i = 0;
int j = 0;
for (i = 0; i < 4; i++)
{
Console.Write('\n');
for (j = i; j < 4; j++)
{
Console.Write("█");
}
}
Console.ReadKey();
}
这就是我希望输出的样子。
█
██
███
████
答案 0 :(得分:4)
您需要将循环条件从inremant转换为 ..
for (i = 0; i < 4; i++)
{
Console.Write('\n');
for (j = i; j >= 0; j--)
{
Console.Write("█");
}
}
输出将是;
这是DEMO
。
更新:由于您改变主意,因此需要在每列中添加空格(列号为i
)4 - 1
次。
public static void Main(string[] args)
{
int i = 0;
int j = 0;
for ( i = 0; i < 4; i++ )
{
for ( j = 0; j < 4; j++ )
{
if ( j < 3 - i )
Console.Write(" ");
else
Console.Write("█");
}
Console.Write('\n');
}
Console.ReadKey();
}
这是 DEMO 。
答案 1 :(得分:2)
应该是:
for (j = 3 - i; j < 4; j++)
{
Console.Write("█");
}
答案 2 :(得分:2)
class Program
{
const int Dimension = 4;
static void Main(string[] args)
{
char[] blocks = new char[Dimension];
for (int j = 0; j < Dimension; j++)
blocks[j] = ' ';
for (int i = 0; i < Dimension; i++)
{
blocks[Dimension - i - 1] = '█';
for (int j = 0; j < Dimension; j++)
Console.Write(blocks[j]);
Console.WriteLine();
}
Console.ReadKey();
}
}
答案 3 :(得分:1)
最简单的方法是:只需反转内部循环条件并递减计数器而不是递增计数器:
for (i = 0; i < 4; i++)
{
Console.Write('\n');
for (j = i; j >= 0; j--)
{
Console.Write("█");
}
}
Console.ReadKey();
返回:
█
██
███
████
从右到左版本:
for (i = 0; i < 4; i++)
{
for(j = 0; j < 4; j++)
{
if(j < 3 - i)
Console.Write(" ");
else
Console.Write("█");
}
Console.Write('\n');
}
Console.ReadKey();
结果:
█
██
███
████