首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >简单文件I/O -读取新行

简单文件I/O -读取新行
EN

Stack Overflow用户
提问于 2009-11-10 03:14:45
回答 9查看 2.1K关注 0票数 1

我有一个文件,存储一个班级学生的考试成绩。我正在尝试编写一个程序,它可以成功地打开文件,读取考试成绩,找到平均分数、最高分数和最低分数,并将它们打印出来。平均分数应在小数点后打印2位数字。

这就是我到目前为止所知道的:

代码语言:javascript
复制
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?我觉得我做得不对。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-11-10 03:18:26

我发现的第一个错误是max将始终与temp完全相等,因为您为它们分配了相同的值,因此此if永远不会为真:

代码语言:javascript
复制
max = int.Parse(myData);
temp = int.Parse(myData);

if (temp > max)
票数 4
EN

Stack Overflow用户

发布于 2009-11-10 03:42:26

这里有一种方法会让你的老师感到悲伤:

代码语言:javascript
复制
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

票数 7
EN

Stack Overflow用户

发布于 2009-11-10 03:22:23

还不错。下面是一些伪代码:

  1. File.ReadAllLines获取字符串数组(称为行)
  2. 每行中的每一行
    1. 解析双精度(?是否保证每一行都是parsed

?)

  • if max < parsed,max = parsed

  • if min > parsed,min =parsed

  • += +=int

  1. 打印出最小值、最大值、(sum / lines.count).ToString("000.00")

假设文件如下所示:

25

12

33.5

100

75

..。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1703113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档