[英]C# Sum of values from txt file
如何从“Values.txt”中获取值的总和? 以及如何显示它? 我对编码很陌生,这是一个入门级的编码课程。
static void Main(string[] args)
{
StreamReader myReader = new StreamReader("Values.txt");
string line = "";
while (line != null)
{
line = myReader.ReadLine();
if (line != null)
Console.WriteLine(line);
}
}
假设文本文件只包含整数,每行一个。 我没有为此使用 LINQ,因为您才刚刚开始,最好先了解正常循环并先进行解析。 这种方式也不能容忍坏数据:
//read all the file into an array, one line per array entry
string[] lines = File.ReadAllLines(@"c:\temp\values.txt");
//declare a variable to hold the sum
int sum = 0;
//go through the lines one by one...
foreach(string line in lines)
//...converting the line to a number and then adding it to the sum
sum = sum + int.Parse(line);
//print the result
Console.WriteLine("sum is " + sum);
并与我们现在使用 LINQ 和其他代码缩短编写的方式进行比较:
var lines = File.ReadAllLines(@"c:\temp\values.txt");
var sum = lines.Sum(e => int.TryParse(e, out int x) ? x : 0);
Console.WriteLine($"sum is {sum}");
后一种形式使用 TryParse 来容忍坏数据。 不要把这段代码当作你的作业——你的主管肯定知道是其他人写的; 内联条件、LINQ、字符串插值、速记输出变量和 var 声明等都是您不会在编程 101 中涵盖的内容,仅供参考和您自己的好奇心:)
您已经获得了从文件中读取每一行的准系统,因此您现在需要做的是将这些行解析为整数。 假设每一行只是一个数字,您可以执行以下操作:
您要做的是声明一个变量,一个存储总和的整数(您可以更改它),从 0 开始。然后,在 null check if 块中,您可以输入以下内容:
// Check whether the line is an integer.
if (Int32.TryParse(line, out int parseValue) {
// Add the value to the sum.
sum += parseValue;
}
这是我对单行代码的尝试。
ReadAllLines 将所有行读入一个字符串数组。 您可以在数组上使用内置方法 .Sum() 将所有数字相加,但由于数组由字符串组成,我们可以使用 int.Parse() 将字符串转换为整数。
ReadAllLines 的定义
Array.Sum() 的定义
现在既然我们知道如何从文件中读取所有行并将它们转换为数字,我们可以使用语句Sum(x => int.Parse(x))
.. 这意味着,将字符串解析为数字并将它们相加都起来。
int sum = File.ReadAllLines(@"C:\temp\numbers.txt").Sum(x => int.Parse(x));
Console.WriteLine(sum);
// sum = 29
numbers.txt 文件有内容:
10
10
2
2
2
3
详细流程:
File.ReadAllLines(FilePath)
生成字符串数组。 我们可以在数组上运行各种进程,如 Sum、Count、Average 等。(x => int.Parse(x))
本身根据字符串数组中的each line
(由 x 表示(x => int.Parse(x))
生成一个数字数组。 如果我们能得到数字数组,我们可以使用 Sum(arrayOfNumbers) 的方法Array.Sum(x => int.Parse(x))
生成单个数字,它是 Array 的所有数字的总和。首先,您需要读取文件并获取所有行。 然后循环每一行并检查它是否为数字,然后添加。
string[] strNumbers = System.IO.File.ReadAllLines(@"C:\MyFolder\Values.txt");
int count = 0;
foreach (string strNumber in strNumbers)
{
if (Int32.TryParse(strNumber, out int number))
{
count = count + number;
}
}
Console.WriteLine("Total : " +count);
var sum = File.ReadLines("Values.txt")
.Select(line => Convert.ToInt32(line))
.Sum();
Console.WriteLine(sum);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.