-3

这是一个简单的问题,但要确保我做对了!

我想生成从数字 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); 
}

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

4

9 回答 9

7

for循环索引增加 5 而不是 1。

for (int i = 3; i < 10000; i += 5) 
{ 
   uniqueInts.Add(i); 
}
于 2013-07-25T20:23:40.463 回答
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);
于 2013-07-25T20:32:12.960 回答
1

首先,如果您想知道自己是否做得对,请在新的控制台项目中自己测试并调试它
其次,您的代码将生成一个{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。

于 2013-07-25T20:27:11.523 回答
1

您可以尝试以下方法:

IList<int> uniqueInts = new List<int>();

for (int i = 3; i < 10000; i+=5)
{
   uniqueInts.Add(i);
}

当然,您必须定义一个上限,因为 i < 10000 只会给您 (10000 / 5) - 1 个数字。

于 2013-07-25T20:24:04.710 回答
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, ...
于 2013-07-25T20:24:23.667 回答
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);
}
于 2013-07-25T20:27:34.597 回答
0

你的代码是错误的,它5每次都会添加数字。

而是这样做:

var uniqueInts = new List<int>();
addBy = 5;

for (int i = 3; i < 10000; i += 5) 
{ 
    uniqueInts.Add(i); 
}
于 2013-07-25T20:22:49.060 回答
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();

    }
}
于 2013-07-25T20:30:39.217 回答
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();
于 2013-07-25T20:34:41.050 回答