如何使用数组 C# 将月降雨量输出为"*"?



我创建了一个程序,允许用户输入一年的降雨量。然后,该程序将输出一个图表以及汇总数据,如平均、最大、最小和总降雨量。

虽然我基于数据的所有输出都可以工作,但实际的图表显示以星号输入的数字不能工作。

我不太明白我哪里出错了。我已经链接了"*"表以及我下面的实际代码。任何帮助都将非常感激。顺便说一下,我是c#的初学者。示例输出
int[] monthrainfall = new int[12];
int i;
double average;
int total = 0;
int max = 0;
int min = Int32.MaxValue;
string bar = "";
//title
Console.Write("nnRainfall Data:n");
Console.Write("**************n");
//asks user to input names
Console.Write("Enter Rainfall for the year:n");
for (i = 0; i < 12; i++)
{
Console.Write("Enter rainfall for month {0}: ", i + 1);
monthrainfall[i] = Convert.ToInt32(Console.ReadLine());
}
//outputs rainfall results
Console.WriteLine("nRainfall Chart");
Console.WriteLine("**************");
//outputs results for each month
for (i = 0; i < 12; i++)
{
Console.Write("Month {0}: ", i + 1);
bar = bar + "*";
Console.WriteLine("{0} ", bar[i]);
}
Console.WriteLine("nSummary data");
Console.WriteLine("**************");
//calculates the maximum rainfall
for (int index2 = 0; index2 < 12; index2++) //inline variable declaration
{
if (monthrainfall[index2] > max) max = monthrainfall[index2];
}
Console.WriteLine("The maximum rainfall was: " + max);
//calculates the minimum rainfall
for (int index3 = 0; index3 < 12; index3++) //inline variable declaration
{
if (monthrainfall[index3] < min) min = monthrainfall[index3];
}
Console.WriteLine("The minimum rainfall was: " + min);
//calculates average rainfall
for (int index = 0; index < 12; index++)
{
total = total + monthrainfall[index];
}
average = (total) / 12;
Console.WriteLine("The average rainfall was: " + average);
Console.WriteLine("The total rainfall was: " + total);
Console.ReadKey();
for (i = 0; i < 12; i++)
{   //loop every month
Console.Write("Month {0}: ", i + 1);
bar = "";
for(int stars = 0; stars < monthrainfall[i]; stars++)
{
bar = bar + "*";
}
Console.WriteLine("{0} ", bar[i]);
}

但是正如@Flydog57所说,使用字符串构造函数而不是额外的for循环

所有的解释都将在这部分代码中进行

//outputs results for each month
for (i = 0; i < 12; i++)
{
Console.Write("Month {0}: ", i + 1);
bar = bar + "*";
Console.WriteLine("{0} ", bar[i]);
}

第1部分:bar = bar + "*";上,每次循环迭代只添加一个*。但是,您想要的是根据在monthrainfall中输入的数字添加数字。

正如@Flydog57建议的那样,修改将是bar = new string('*', monthrainfall[i]);


第2部分:Console.WriteLine("{0} ", bar[i]);上,您只打印一个*,因为您选择了字符串bar的元素bar[i]

修改为Console.WriteLine("{0} ", bar);


最新更新