这是一个简单的问题,但我想确保我正确行事!
我想生成数字列表,其中我以数字3开头,并为每个下一个数字添加5。
结果应该是这样的:
var list = new List<int> { 3, 8, 13, 18, 23, 28 ..... 103 };
我的代码:
var uniqueInts = new List<int>();
addBy = 5;
for (int i = 3; i < 1000; i++)
{
uniqueInts.Add(addBy);
}
我是否正确尝试或有任何简单的方法?
答案 0 :(得分:7)
将for
循环索引增加5而不是1。
for (int i = 3; i < 10000; i += 5)
{
uniqueInts.Add(i);
}
答案 1 :(得分:5)
只是为了比较,这是使用Linq的方法。在这种情况下,我认为我更喜欢你的循环:)
var list = Enumerable.Range(0, 21).Select(x => x*5+3).ToList();
编辑:不确定你的评论下面关于想要输出为“var list = ...”的意思,但如果你想要字符串(即源代码)作为输出,你可以使用Linq聚合;
string str = Enumerable.Range(0, 21).
Aggregate(new StringBuilder("var list = new List<int> {"),
(builder, i) => builder.Append(i*5+3 + ", ")).Append("};").ToString();
Console.WriteLine(str);
答案 2 :(得分:1)
您可以尝试以下操作:
IList<int> uniqueInts = new List<int>();
for (int i = 3; i < 10000; i+=5)
{
uniqueInts.Add(i);
}
当然,你必须定义一个上限,因为我&lt; 10000只会给你(10000/5) - 1个数字。
答案 3 :(得分:1)
更改增量:
i += 5
所以,应用:
for (var i = 3; i < 10000; i += 5){
uniqueIds.Add(i);
}
// 3, 8, 13, 18, 23, ...
假设这就是你的意思,但你的问题有点含糊不清。
除非你想为列表中的每个数字添加5,在这种情况下:
var list = new List<int> { 3, 8, 13, 18, 23, 28 ..... 103 };
var uniqueIds = new List<int>();
foreach (var n in list)
{
uniqueIds.Add(n + 5);
}
// 8, 13, 23, 33, ...
答案 4 :(得分:1)
首先,如果您想知道自己是否做得对,请在new console project和debug it中自行测试。
其次,
您的代码将生成{5, 5, 5, 5...}
列表
你应该做的是:
var uniqueInts = new List<int>();
addBy = 5;
for (int i = 3; i < 1000; i += addBy)
{
uniqueInts.Add(i);
}
这种方式i
在每个循环结束时始终会5
增长,并且会被添加到列表中。
这将为您提供3到1000之间的所有结果,跳跃为5,如果这是你想要的。
答案 5 :(得分:0)
您的代码错误,每次都会添加数字5
。
而是这样做:
var uniqueInts = new List<int>();
addBy = 5;
for (int i = 3; i < 10000; i += 5)
{
uniqueInts.Add(i);
}
答案 6 :(得分:0)
您可以尝试这样的事情:
int num = 3;
List<int> listofnumbers = new List<int>();
listofnumbers.Add(num);
for (int i = 0; i < 10000; i++)
{
num += 5;
listofnumbers.Add(num);
}
答案 7 :(得分:0)
您可以尝试这样的事情:
class Program
{
static void Main(string[] args)
{
List<int> numList = new List<int> { 3 };
for (int i = 0; i < 100; i++)
{
Console.WriteLine(numList[i]);
numList.Add(numList[i] + 5);
}
Console.Read();
}
}
答案 8 :(得分:0)
使用IEnumerable<int>
看起来非常适合无限序列:
IEnumerable<int> GeometricProgression(int start, int step)
{
while(true)
{
yield return start;
start += step;
}
}
用法:
var result = GeometricProgression(3, 5).Take(10).ToList();