2014-09-29 99 views
1

我需要能够将文本文件读入数组,而不是自己输入所有的值。 文本文件读作:将.txt文件读入数组

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

'var lines = File.ReadAllLines(@“C:\ scores。';' – sed 2014-09-29 13:24:50

+3

'string [] lines = File.ReadAllLines(path); double [] values = Array.ConvertAll(lines,double.Parse);' – 2014-09-29 13:25:01

+1

numbers.Min,numbers.Max,numbers.Average。http ://msdn.microsoft.com/en-us/library/bb386914(v = vs.110).aspx – Neolisk 2014-09-29 13:25:22

回答

2

你有没有适当的代码读取文件,或者写一个文件,以便将是你的问题。我建议你先看看:StreamReader Class (MSDN)

那么你可能想看看以下内容:String.Split Method (MSDN)

为了使程序多一点活力,你可能要考虑看​​这个:

Application.ExecutablePath Property (MSDN)

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

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

你可以考虑另一种选择在很多细节这里描述:

Working with Files - Code Project Article

0

VAR得分= File.ReadAllLines( “scores.txt”)选择(X => Double.Parse(X) ).ToArray();

+0

不回答e全部问题。 – Neolisk 2014-09-29 13:28:52

1

所有这一切都可以writen简单:

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(); 
2

您可以使用File.ReadLines方法懒洋洋地读取线(指不加载所有的一次线到内存)从您的文件和Select方法把每一行并解析它double

var values = File.ReadLines("path") 
      .Select(line => double.Parse(line)) 
      .ToArray(); 

然后你可以使用从LINQMaxMinAverage方法来获取最高,最低数量的d的平均值。

+0

是的,是好的 - 但注意你可以简化选择为'.Select(double.Parse)' – 2014-09-29 13:33:05

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(); 
+0

'var min = numbers.Max();'? 'var sum = numbers.Max();'? – Xaruth 2014-09-29 13:35:52

+1

@Xaruth Dunno你的意思是?呃...... :) – DavidG 2014-09-29 13:36:44