2016-11-26 15 views
0

リストインデックスに値を追加しようとしています。インデックスの現在の値をインクリメントするだけですが、このスニペットでエラーが表示されます。リストのインデックス値をインクリメント<int>

Random random = new Random(); 

      int[] intArray = new int[10]; 
      List<int> intList = new List<int>(); 

      for (int i = 0; i < 10; i++) 
      { 
       int randomNumber = random.Next(1, 10); 

       intArray[randomNumber] = intArray[randomNumber] + randomNumber; 

       // The next line does not add the value of the random number to the List(randomNumber) 
       //System.ArgumentOutOfRangeException was unhandled 

       intList.Insert(randomNumber, intList[randomNumber]+randomNumber); 
      } 

int []を使用します。

答えて

0

あなたの乱数の配列における要素がないので、

intList[randomNumber] 

は、それが最初に実行され得るときの乱数は、4であると仮定し、それは持っていないインデックス4、をチェックします素子。

また、インデックスは0から始まり、以下のようにコードを変更、

intList.Insert(i, randomNumber); 
0

残念ながら、あなたは現在のリストの長さを超えてインデックスから挿入しカント。 ArgumentOutOfRange例外が発生します。

あなたのリストを最初に初期化することです。 (使用してLINQ)

List<int> intList = new List<int>(Enumerable.Repeat(0, 10) /*repeat zero 10 times.*/); 
0

あなたは10個の整数の配列を作成している、と整数のリスト。だからリストは空になり、決して.Addそのリストには何も載っていない。後でリストの項目を参照しようとすると、もちろん例外が発生します。だから.Addあなたのリストにいくつかの項目が必要です、またはあなたはあなたの整数配列の要素で既にいっぱいになるので、リストが作成されると、リストのコンストラクタで整数配列を使用することができます。

Int32[] intArray = new Int32[10]; 
List<Int32> intList = new List<Int32>(intArray); 
関連する問題