For循环在c#控制台中制作条形图



我试图使一个函数在两个值:数组分数[]和int元素.该函数的目标是为scores[]中的每个值打印一行* *数组中。例如,如果我们有

int[] scores = {5, 1, 10};
elmts = 3;

我想让它把这个打印到控制台:

* * * * *
*
* * * * * * * * * * 

我试着用下面两个嵌套的for循环来实现这个:

for(int i = 0; i < elmts; i++)
{
for(int k = 0; k < scores[k]; k++)
{
Write(" *");
}
WriteLine();
}

但是输出是:

*
*
*
有谁能告诉我我哪里错了吗?

我猜你在数组中索引器错误,特别是scores[k]应该是scores[i]

var scores = new[] {4, 3, 4, 6, 4};
for (int i = 0; i < scores.Length; i++)
{
for (int k = 0; k < scores[i]; k++)
Console.Write(" *");
Console.WriteLine();
}
另一种方法是
for (int i = 0; i < scores.Length; i++)
Console.WriteLine(string.Concat(Enumerable.Repeat(" *", scores[i])));

foreach (var score in scores)
Console.WriteLine(string.Concat(Enumerable.Repeat(" *", score)));

var graph = scores.Select(x => string.Concat(Enumerable.Repeat(" *", x)));
Console.WriteLine(string.Join(Environment.NewLine, graph));

* * * *
* * *
* * * *
* * * * * *
* * * *

最新更新