对于循环直接跳到最后

时间:2013-09-24 19:12:46

标签: 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();
            }
        }
    }
}

4 个答案:

答案 0 :(得分:6)

for循环中的条件是必须保持 true 才能进入循环体的条件。所以这个:

for (int height = bar; height == 0; height--)

应该是:

for (int height = bar; height >= 0; height--)

否则,执行赋值,然后它将检查height是否为0,如果不是(必然是这种情况),那就是循环的结束。

有关详细信息,请参阅MSDN documentation for for loops

答案 1 :(得分:3)

试试这个: -

for (int height = bar; height >= 0; height--)

而不是

for (int height = bar; height == 0; height--)

答案 2 :(得分:2)

仅当bar小于或等于零时才退出while循环。所以最初在for循环高度= bar(大于0)。你检查高度是否等于零,这是错误的。您想检查&gt; = 0。

答案 3 :(得分:0)

for (int height = bar; height == 0; height--)

您的情况:height == 0; 永远不会成真。

为了使其真实,身高必须为0
并且为了使高度为0,条形必须为0

如果bar0,那么因为这个无限循环而你甚至没有进入你的for循环:

while (bar <= 0);