2016-05-03 9 views
0

私は、毎月何らかの計算をした後、増加数を持つリストを作成しようとしました。 たとえば、1月にnumber = 1、月2 number = 3、月3 number = 5です。 計算式はnumber[i] = i + number[i - 1]です。月はiです。インデックスがMVC 4の範囲外にあるのはなぜですか?

私はこの

Month[1] = 1, 
Month[2] = 3, 
Month[3] = 5, 
Month[4] = 7, 
Month[5] = 9, 
Month[6] = 11, 
Month[7] = 13, 
... 
Month[12] = 23 

などのすべてのリストがここに私のコントローラ

for (i = 1; i <= 12; i++) 
{ 
    List<int> number = new List<int>(); 
    if (i <= 12) 
    { 
     number[i] = a(i, number[i - 1]); 
    } 
    else 
    { 
     //something else 
    } 
} 

はここに私のa機能

public int a(int month, int number) 
{ 
    try 
    { 
     a = month + number; 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
    return a; 
} 

だだが、実行されたときに私はこれを取得しています表示したいですエラー

インデックスが範囲外です。負でなく、コレクションのサイズより小さくなければなりません。

私はこの

for (i = 0; i <= 12; i++) 
{ 
    //... 
} 

にコントローラを変更しかし、同じエラーを持っていました。誰か助けてくれますか?なぜこのエラーが発生していますか?

+1

を試してみて、アイテムがそこに存在しないので、'番号[i]は 'throwsan例外'ように、空のコレクションを初期化(そして、もし 'if(i <= 12)'のポイントは何ですか? - 常にそれ以下です12) –

+0

@StephenMueckeリストに変更すると、 [] number = new List [13]; '私はこのエラーは、 'number [i] = a(i、number [i - 1]); ' – JTR

+0

申し訳ありません、私は本当にMVCを使用して、まだ学習して新しいです。 – JTR

答えて

0

`一覧は 数=新しいリスト ()ので、この

Fiddle demo

int[] number = new int[13]; 
     for (int i = 1; i <= 12; i++) 
     { 
      if (i <= 12) 
      { 
       number[i] = a(i, number[i - 1]); 
      } 
      else 
      { 
       //something else 
      } 
     } 
     int j = 1; 
     List<int> item = new List<int>(); 
     foreach (var a in number) 
     { 
      if (j <= 12) 
      { 
       item.Add(a); 
      } 
      else 
      { 
       break; 
      } 
      j++; 
     } 

    public int a(int month, int number) 
    { 
     int a = 0; 
     try 
     { 
      a = month + number; 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
     return a; 
    } 
+1

??それは出力OPが望んでいる近くに来ることさえありません。 –

+0

結果がロードされるまでに時間がかかる... [こちらの画像をチェックしてください](http://i.stack.imgur.com/DdU13.jpg)..あなたにはもっと明らかになります –

+1

。あなたが得た結果をOPが質問に述べた値と比較してください。 –

関連する問題