选择for循环中的每第三个数字

时间:2014-10-02 07:51:16

标签: c#

我尝试编写for循环,然后选择每个第三个数字并在控制台上写一行。

这是我到目前为止所尝试的:

for (int i = 1; i <=52; i++)
{
    if (something??)
    {
        Console.WriteLine("Week" + i);
    }
}

我也试着这样写:

Week 1                Week 4            Week 7
Week 10               Week 13           Week 16
Week 19               Week 23           Week 25

等到52 ......

正确方向的一点帮助真的很棒!

编辑:

对不起我的意思是每三个号码......

非常感谢你的帮助我在那里呆了一段时间,现在我必须弄清楚如何让Weeks如上所示.. :)

5 个答案:

答案 0 :(得分:7)

你可以尝试这个:

for (int i = 1; i <=52; i+=3)
{

}

您不需要使用if语句。您只需将循环步骤从1(i++)更改为您需要的步骤3(i+=3)。

答案 1 :(得分:3)

对于你是否想要第3或第5个元素,似乎有些困惑。无论哪种方式,方法都是相同的,只需用3替换5

有两个选项

 for (int i = 1; i <=52; i+=3)

OR

for (int i = 1; i <=52; i++)
          {
              if (i % 3 == 1)
              {
                  Console.WriteLine("Week" + i);
              }
          }

答案 2 :(得分:1)

最简单的解决方案是将for循环中的变量增加5或3?

for (int i = 0; i <=52; i+=5)
{
     Console.WriteLine("Week" + i);
}

答案 3 :(得分:0)

您可以使用整数作为计数器,以便您知道它何时完成if语句5次。如果已经5次,则可以运行代码并重置计数器 这是你在找什么?

对于你提问的第二部分,我同意Christos。

希望这有助于你

答案 4 :(得分:0)

如果您对学习LINQ感兴趣,可以这样做:

IEnumerable<string> thirdWeeks = Enumerable.Range(0, 52)
    .Where((week, index) => index % 3 == 0)
    .Select(week => string.Format("Week {0}", week + 1));
string allWeeksInOneLine = String.Join(Environment.NewLine, thirdWeeks);
Console.Write(allWeeksInOneLine);

如果您需要三周内的群组,例如Week 1 Week 4 Week 7

var weeksGrouped = thirdWeeks
    .Select((week, index) => new { week, index })
    .GroupBy(x => x.index / 3)
    .Select(g => String.Join("\t", g.Select(x => x.week)));
string allWeeksGrouped = String.Join(Environment.NewLine, weeksGrouped);
Console.Write(allWeeksGrouped);

结果:

Week 1  Week 4  Week 7
Week 10 Week 13 Week 16
Week 19 Week 22 Week 25
Week 28 Week 31 Week 34
Week 37 Week 40 Week 43
Week 46 Week 49 Week 52