C#获取用户输入并添加至数组求助:计算平均值功能异常
解决C#无法获取用户输入并存入数组的问题
我明白你遇到的问题了——你的程序目前只输出了提示文本,但缺少读取用户输入并将其存入数组的核心逻辑。下面我会帮你修正代码,同时解释关键步骤:
修正后的完整代码
using System; class Program { static void Main() { double average = 0; int[] marks = new int[5]; // 初始化长度为5的int数组,用于存储5个输入值 Console.WriteLine("Enter 5 elements:"); // 循环5次,获取用户输入并存入数组 for (int i = 0; i < marks.Length; i++) { Console.Write($"请输入第 {i + 1} 个分数: "); // 读取输入并转换为int类型,存入数组对应位置 marks[i] = int.Parse(Console.ReadLine()); } // 计算平均值:先求和再除以元素个数 int sum = 0; foreach (int mark in marks) { sum += mark; } average = (double)sum / marks.Length; // 根据平均值输出正负标识 Console.WriteLine($"平均值为: {average:F2}"); if (average > 0) { Console.WriteLine("标识: 正"); } else if (average < 0) { Console.WriteLine("标识: 负"); } else { Console.WriteLine("标识: 零"); } } }
关键修正点解释
- 数组初始化:首先要明确创建长度为5的数组
int[] marks = new int[5];,这样才有存储输入值的空间。 - 读取用户输入:用
for循环遍历数组的每个索引,每次通过Console.ReadLine()获取用户输入,再用int.Parse()将输入的字符串转换为整数类型,存入数组对应的位置。 - 平均值计算:先通过
foreach循环累加数组中的所有元素得到总和,再将总和转换为double类型后除以元素个数,避免整数除法导致的精度丢失。 - 标识输出:根据平均值的正负情况,输出对应的标识文本。
可选优化:处理非法输入
如果担心用户输入非数字内容导致程序崩溃,可以添加异常处理逻辑:
for (int i = 0; i < marks.Length; i++) { Console.Write($"请输入第 {i + 1} 个分数: "); // 尝试解析输入,若失败则提示重新输入 while (!int.TryParse(Console.ReadLine(), out int input)) { Console.WriteLine("输入无效,请输入整数!"); Console.Write($"请重新输入第 {i + 1} 个分数: "); } marks[i] = input; }
这样程序就能稳定获取用户输入并完成后续的平均值计算和标识输出了。
内容的提问来源于stack exchange,提问作者SeriousEngineer
相关产品推荐
相关产品推荐

