如何生成将5添加到起始编号的数字列表?

时间:2013-07-25 20:20:50

标签: c# visual-studio-2010 c#-4.0 .net-4.5

这是一个简单的问题,但我想确保我正确行事!

我想生成数字列表,其中我以数字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); 
}

我是否正确尝试或有任何简单的方法?

9 个答案:

答案 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 projectdebug 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();