我有一个文件,存储一个班级学生的考试成绩。我正在尝试编写一个程序,它可以成功地打开文件,读取考试成绩,找到平均分数、最高分数和最低分数,并将它们打印出来。平均分数应在小数点后打印2位数字。
这就是我到目前为止所知道的:
static void Main()
{
string myData = "";
int temp = 0;
int max = 0;
int min = 0;
double average = 0;
StreamReader fileReader = new StreamReader("data.txt");
do
{
myData = fileReader.ReadLine();
if (myData != null)
{
max = int.Parse(myData);
temp = int.Parse(myData);
if (temp > max)
temp = max;
}
} while (myData != null);
fileReader.Close();
Console.ReadLine();
}//End Main()我真的不知道该怎么做。如何读入新行并将其分配给temp?我觉得我做得不对。
发布于 2009-11-10 03:18:26
我发现的第一个错误是max将始终与temp完全相等,因为您为它们分配了相同的值,因此此if永远不会为真:
max = int.Parse(myData);
temp = int.Parse(myData);
if (temp > max)发布于 2009-11-10 03:42:26
这里有一种方法会让你的老师感到悲伤:
static void Main(string[] args)
{
var file = new StreamReader("scores.txt");
var split = file.ReadToEnd().Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
IEnumerable<int> ints = split.Select(x => int.Parse(x));
Console.WriteLine("Total Scores:" + ints.Count());
Console.WriteLine("Max:" + ints.Max());
Console.WriteLine("Min:" + ints.Min());
Console.WriteLine("Average:" + ints.Average().ToString("0.00"));
Console.ReadLine();
}虽然这在技术上是正确的,但这对理解算法(无论它们是多么基础)是适得其反的,我建议您看看其他答案。但这证明了.NET框架的多功能性。
<3个LINQ
发布于 2009-11-10 03:22:23
还不错。下面是一些伪代码:
?)
假设文件如下所示:
25
12
33.5
100
75
..。
https://stackoverflow.com/questions/1703113
复制相似问题