【问题标题】:How to increment i in for loop in C#如何在C#的for循环中增加i
【发布时间】:2018-09-15 17:34:32
【问题描述】:

我正在尝试修改下面的代码,以便列中的每个第一个数字都基于行号。

int i, sum = 0;

for (int row = 0; row < 7;  row++)
{
    for (i = 1; i < 6; i++)
    {
        sum = sum + i;
        Console.Write("{0} ", i);
    }

    Console.WriteLine(sum);
    sum = 0;                
}

Console.Read();

在控制台中显示:

1 2 3 4 5 15
1 2 3 4 5 15
1 2 3 4 5 15
1 2 3 4 5 15
1 2 3 4 5 15
1 2 3 4 5 15
1 2 3 4 5 15

但我正在尝试这样:

1 2 3 4 5 sum
2 3 4 5 6 sum
3 4 5 6 7 sum
4 5 6 7 8 sum
and so on..
......
....

你知道如何解决这个问题吗?

【问题讨论】:

  • 提示:在你的内部循环中,每一行都以i = 1 开始。也许这是你可以改变的?

标签: c# for-loop increment


【解决方案1】:

将内循环改为

for (int i = row + 1; i < row + 6; i++)

【讨论】:

    【解决方案2】:

    替换

    sum = sum + i;
    Console.Write("{0} ", i);
    

    在此处输入代码

    number = number + row
    sum = sum + number;
    Console.Write("{0} ", number);
    

    这样您就可以使用变量 row 来跟踪行的起始编号。

    【讨论】:

      【解决方案3】:

      如果您不需要控制台语句而只需要求和,则可以不使用内部循环并且:

      sum = Enumerable.Sum(Enumerable.Range(row+1, 5));
      

      这是 LINQ

      或者,如果您需要控制台语句:

      Enumerable.Range(row+1, 5).ToList().ForEach(c => sum += c; Console.Write(c));
      

      【讨论】:

      • 向新程序员推荐 LINQ 和 lambda?他们仍在尝试探索 for 循环。
      • 我认为应该考虑到这一点,我们大多数人开始在一个这些概念不存在的环境中编程......可能有一段时间有人认为这些概念是同义词而不是一步一步@DavidMakogon
      • 重点是,他们的循环起点不正确。您的解决方案完全背离了他们的代码,转而使用可枚举、linq、lambda。这绝不会纠正他们的代码。是重写。对于经验丰富的开发人员来说,这可能是一个明显的解决方案。但是答案与他们的问题和c#的能力水平不符。能提供这么简洁的答案真是太好了;只是这个问题与上下文无关。
      • 像这样的老派心态肯定意味着你会在 2 点选择 rb...go iggles
      猜你喜欢
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      相关资源
      最近更新 更多