编写一个C#程序以从文本文件中检索值并打印值的平均值,格式化为两位小数。
所以我已经编码并创建了一个名为" averages.txt"的文本文件。文件中有4个数字,我的程序已经在我的文本文件中检索数据并输出值。
我遇到问题的地方是我需要找到文件中4个数字的平均值,然后将数字格式化为2个小数位。
我的代码:
static void Main(string[] args)
{
string innerNum;
string outerNum = "";
if (File.Exists("averages.txt"))
{
try
{
StreamReader inFile = new StreamReader("averages.txt");
while ((innerNum = inFile.ReadLine()) != null)
{
outerNum += innerNum + "\n";
}
Console.WriteLine(outerNum);
}
catch (System.IO.IOException e)
{
Console.WriteLine("IO Exception: " + e.Message);
}
}
else
{
Console.WriteLine("The File Does Not Exist.");
}
Console.Write("Press Enter to Exit.");
Console.ReadKey();
}
}
}
答案 0 :(得分:0)
你必须将一个字符串解析为double。请记住,只有当每一行都有数字时,以下解决方案才有效。您应该添加验证,异常处理等。
您可以通过String.Format(“{0:N2}”,...)输出带小数点后2位的数字。 http://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx
static void Main(string[] args) {
string innerNum;
string outerNum = "";
double sum = 0;
int count = 0;
if (File.Exists("averages.txt")) {
try {
StreamReader inFile = new StreamReader("averages.txt");
while ((innerNum = inFile.ReadLine()) != null) {
try {
outerNum += innerNum + "\n";
sum += double.Parse(innerNum);
count++;
} catch(Exception e) {}
}
Console.WriteLine(outerNum);
} catch (System.IO.IOException e) {
Console.WriteLine("IO Exception: " + e.Message);
}
} else {
Console.WriteLine("The File Does Not Exist.");
}
Console.WriteLine("Average is : " + String.Format("{0:N2}",sum/(double)count));
Console.Write("Press Enter to Exit.");
Console.ReadKey();
}
答案 1 :(得分:0)
我回答这个问题,假设这是一个家庭作业,你的教授不会接受这个Linq解决方案作为答案。
var avg = File.ReadAllText("averages.txt")
.Split(" \t\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.Average(x => double.Parse(x, CultureInfo.InvariantCulture));
Console.WriteLine("AVG: {0:0.00}", avg);