-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ループ インデックスを 1 ではなく 5増やします。

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

次のことを試すことができます。

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 に答える
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 に答える
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

コードが間違って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

の無限シーケンスに完全に適合するように見えます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 に答える
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 に答える