【问题标题】:Problem with how to calculate sum of integers from file如何从文件中计算整数和的问题
【发布时间】:2020-11-10 15:48:23
【问题描述】:

我有这种格式的文件:

4651
9537
8154

我必须计算每一行的总和。我尝试这样的事情:

 string[] files = File.ReadAllLines(@"myPath"); // put each row of file in the array
 for(int i = 0; i < files.Length; i++) {
       string[] subFiles = files[i].Split(','); // try to make array of each files array element
       float sum = 0;
       for(int k = 0; k < subFiles.Length; k++) {
             float number = Singe.Parse(subFiles[k]); // convert each element of subFiles into float
             sum += number;
       }
       Console.WriteLine(sum);   
}

当我记录这个时,得到了我在文件中的确切格式:

4651
9537
8154

如果有人能告诉我错误在哪里,我该怎么做,我将不胜感激。

【问题讨论】:

  • 您似乎希望每一行都有一个以逗号分隔的整数列表,但每行只有一个。
  • 4651 的总和是4651。我不确定你到底期望什么。您是要计算每行/行或每个文件的总和吗?另一方面,filessubFiles 在引用行(或行的一部分)而不是文件时选择不当。
  • 你应该在Singe.Parse上得到一个编译错误,如果没有别的......
  • @HereticMonkey 为什么会报错,Single 还是浮点数。
  • @styx Single.Parse 可以正常工作。 Singe.Parse 听起来像是在炉子上做的事情......

标签: c# arrays file sum integer


【解决方案1】:

你在循环内设置float sum = 0;,每个循环都会重置结果,你需要像这样把它移到外面

 float sum = 0;
 string[] files = File.ReadAllLines(@"1.txt"); // put each row of file in the array
 for (int i = 0; i < files.Length; i++)
 {
     ///reset of your code
 }

输出

4651 14188 22342

【讨论】:

    【解决方案2】:

    您可以利用每一行都是string,因此是IEnumerable&lt;char&gt;,可以使用LINQ查询:

    foreach (string line in File.ReadLines(@"myPath"))
    {
        double sum = line.Sum(Char.GetNumericValue);
        Console.WriteLine(sum);
    }
    

    Char.GetNumericValue 获取每个字符的double 表示,可以求和。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-29
      • 1970-01-01
      • 2016-07-06
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 2012-09-09
      • 1970-01-01
      相关资源
      最近更新 更多