我开始学习C#,我的一个任务遇到了问题.任务是创建一个由星星组成的金字塔.高度由用户输入指定.
由于某种原因,我的第一个for循环跳到最后.在调试时,我注意到变量height接收bar到了值,但之后它跳到了最后.我不知道为什么,因为代码对我来说似乎很好.
本do- while循环是有要求用户输入一个新值,如果输入的值0或更低.
using System;
namespace Viope
{
class Vioppe
{
static void Main()
{
int bar;
do
{
Console.Write("Anna korkeus: ");
string foo = Console.ReadLine();
bar = int.Parse(foo);
}
while (bar <= 0);
for (int height = bar; height == 0; height--)
{
for (int spaces = height; spaces == height - 1; spaces--)
{
Console.Write(" ");
}
for (int stars = 1; stars >= height; stars = stars * 2 - 1)
{
Console.Write("*");
}
Console.WriteLine();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在条件for循环是具有保持作为条件真为了进入循环体.所以这:
for (int height = bar; height == 0; height--)
Run Code Online (Sandbox Code Playgroud)
应该:
for (int height = bar; height >= 0; height--)
Run Code Online (Sandbox Code Playgroud)
否则,执行赋值,然后它将检查是否height为0,如果不是(必然是这种情况),那就是循环的结束.
有关更多信息,请参阅MSDN文档for for循环.