将.text文件读入数组

时间:2014-09-29 13:22:47

标签: c# arrays

我需要能够将文本文件读入数组,而不是自己输入所有值。 文本文件显示为:

8.7
9.3
7.9
6.4
9.6
8.0
8.8
9.1
7.7
9.9
5.8
6.9

该计划的主要目的是从数据文件中读取分数,将它们存储在一个数组中,并计算12个分数的最高,最低,总数和平均值。

文本文件存储在项目的Debug文件夹中。

这是我到目前为止所做的:

        Console.WriteLine("Numbers in the list: " + scores.Length);


        //highest number
        double high = scores[0];

        for (int index = 1; index < scores.Length; index++)
        {
            if (scores[index] > high)
            {
                high = scores[index];
            }
        }

        Console.WriteLine("Highest number = " + high);

        //lowest number
        double low = scores[0];

        for (int index = 1; index < scores.Length; index++)
        {
            if (scores[index] < low)
            {
                low = scores[index];
            }
        }

        Console.WriteLine("lowest number = " + low);

        //average of the scores
        double total = 0;
        double average = 0;

        for (int index = 0; index < scores.Length; index++)
        {
            total = total + scores[index];
        }

        average = (double)total / scores.Length;

        Console.WriteLine("Total = " + total);
        Console.WriteLine("Average = " + average.ToString("N2"));
        Console.ReadKey();



    }
}

}

5 个答案:

答案 0 :(得分:2)

您没有用于读取文件或编写文件的代码,这将是您的问题。我建议你先看看:StreamReader Class (MSDN)

然后您可能希望查看以下内容:String.Split Method (MSDN)

为了让程序更具动态性,你可以考虑一下这个:

Application.ExecutablePath Property (MSDN)

Enviroment.GetFolderPath Method (MSDN)(这允许您将数据存储在更好的位置)

^^^^上面的原始回复^^^^^

您可以考虑的另一个选项在这里详细介绍:

Working with Files - Code Project Article

答案 1 :(得分:2)

您可以使用File.ReadLines方法懒散地读取行(表示不会一次性将所有行加载到内存中)和Select方法来获取每一行并将其解析为{ {1}}:

double

然后,您可以使用var values = File.ReadLines("path") .Select(line => double.Parse(line)) .ToArray(); 中的MaxMinAverage方法获取最高,最低数字和平均值。

答案 2 :(得分:1)

所有这一切都可以写得更容易:

using System;
using System.IO;
using System.Linq;

String path = @"MyFolder\myfile.txt"; // path for your file

// read the file
String[] lines = File.ReadAllLines(path);
// convert data in Doubles    
Double[] data = Array.ConvertAll(lines, Double.Parse);

// use Linq to get what you want (min, max, total, average, ...)
Double low = data.Min();
Double high = data.Max();
Double total = data.Sum();
Double average = data.Average();

答案 3 :(得分:0)

var scores = File.ReadAllLines(“scores.txt”)。选择(x =&gt; Double.Parse(x))。ToArray();

答案 4 :(得分:0)

var numbers = File.ReadAllLines(@"C:\numbers.txt")
                  .Select(n => double.Parse(n));
var max = numbers.Max();
var min = numbers.Min();
var sum = numbers.Sum();
var avg = numbers.Average();