1

我开始学习 C#,但我的一项作业遇到了问题。任务是创建一个由星星组成的金字塔。高度由用户输入指定。

出于某种原因,我的第一个for循环跳到最后。在调试时,我注意到变量height接收到bar's 的值,但之后它跳到最后。我不知道为什么,因为代码对我来说似乎很好。

-循环用于向用户询问新值,以防输入的值是do或更低。while0

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

4 回答 4

6

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

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

应该:

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

否则进行赋值,然后检查是否height为0,如果不是(必然如此),则循环结束。

有关更多信息,请参阅循环的MSDN 文档。for

于 2013-09-24T19:15:01.100 回答
3

试试这个:-

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

代替

for (int height = bar; height == 0; height--)
于 2013-09-24T19:14:45.360 回答
2

只有当 bar 小于或等于 0 时才退出 while 循环。所以最初在for循环中height = bar(大于0)。然后你检查高度是否等于零,这是错误的。您要检查 >= 0。

于 2013-09-24T19:15:10.760 回答
0
for (int height = bar; height == 0; height--)

你的条件: height == 0; 永远不会是真的。

为了使它为真,高度必须是0
并且为了高度是0,bar 必须是0

如果bar0,那么由于这个无限的 while 循环,你甚至不会进入你的 for 循环:

while (bar <= 0);
于 2013-09-24T19:19:35.117 回答