我需要能够将文本文件读入数组,而不是自己输入所有值。 文本文件显示为:
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();
}
}
}
答案 0 :(得分:2)
您没有用于读取文件或编写文件的代码,这将是您的问题。我建议你先看看:StreamReader Class (MSDN)。
然后您可能希望查看以下内容:String.Split Method (MSDN)
为了让程序更具动态性,你可以考虑一下这个:
Application.ExecutablePath Property (MSDN)
Enviroment.GetFolderPath Method (MSDN)(这允许您将数据存储在更好的位置)
^^^^上面的原始回复^^^^^
您可以考虑的另一个选项在这里详细介绍:
答案 1 :(得分:2)
您可以使用File.ReadLines
方法懒散地读取行(表示不会一次性将所有行加载到内存中)和Select
方法来获取每一行并将其解析为{ {1}}:
double
然后,您可以使用var values = File.ReadLines("path")
.Select(line => double.Parse(line))
.ToArray();
中的Max
,Min
,Average
方法获取最高,最低数字和平均值。
答案 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();