我开始学习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();
}
}
}
}
答案 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
。
如果bar
是0
,那么因为这个无限循环而你甚至没有进入你的for循环:
while (bar <= 0);