For循环在C#控制台中制作条形图[重复]
Posted
技术标签:
【中文标题】For循环在C#控制台中制作条形图[重复]【英文标题】:For loops to make a bar graph in C# console [duplicate] 【发布时间】:2021-05-14 17:37:12 【问题描述】:我正在尝试创建一个接受两个值的函数:一个数组 scores[] 和一个 int elmts。 该函数的目标是为 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();
但是输出是:
*
*
*
谁能告诉我这里哪里出错了?
【问题讨论】:
遍历你的循环并注意 score[k]: k= 0, scores[k] = 5; k = 1,分数[k] = 1 ericlippert.com/2014/03/05/how-to-debug-small-programs 【参考方案1】:我猜你的数组中的索引器有误,特别是 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));
输出
* * * *
* * *
* * * *
* * * * * *
* * * *
【讨论】:
以上是关于For循环在C#控制台中制作条形图[重复]的主要内容,如果未能解决你的问题,请参考以下文章