在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 (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