在for循环中每隔三个数字选择一个

本文关键字:三个 选择 一个 数字 循环 for | 更新日期: 2023-09-27 18:25:15

我正在尝试编写一个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如上所示。:)

在for循环中每隔三个数字选择一个

你可以试试这个:

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

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

对于您想要第三个元素还是第五个元素,似乎有些困惑。无论哪种方式,方法都是一样的,只需将5替换为3

有2个选项

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

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

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

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

您可以使用一个整数作为计数器,这样您就可以知道它何时完成了if语句5次。如果已经5次了,您可以运行代码并重置计数器
这就是你想要的吗?

关于你问题的第二部分,我同意克里斯托斯的看法。

希望这能帮助您

如果你有兴趣学习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