2014-09-29 88 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