C#使用数组实现月降雨量星号(*)形式输出的问题排查
问题原因
你代码的柱状图功能失效,核心是输出逻辑完全没有关联用户输入的降雨量数据,存在两处错误:
- 星号生成逻辑错误:你只是每次循环给全局的bar变量追加1个星号,和当月实际降雨量没有任何关联
- 输出逻辑错误:每次循环只输出
bar字符串的第i位字符,最终只会逐行输出1个星号,无法形成对应长度的柱状图
修复方案
直接替换原代码中输出柱状图的for循环部分即可:
//outputs results for each month for (i = 0; i < 12; i++) { Console.Write("Month {0}: ", i + 1); // 按当月降雨量生成对应长度的星号串,数值是多少就生成多少个星号 string currentMonthBar = new string('*', monthrainfall[i]); Console.WriteLine(currentMonthBar); }
额外优化建议
你当前的平均降雨量计算存在精度丢失问题:你用int类型的total直接除以12,执行的是整数除法,会自动舍弃小数部分。建议修改平均计算逻辑:
average = (double)total / 12;
这样就能得到带小数的准确平均值。
内容的提问来源于stack exchange,提问作者user17109321
相关产品推荐
相关产品推荐

