对于循环直接跳到最后

der*_*tzi 1 c# for-loop

我开始学习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)

Jon*_*eet 6

在条件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循环.