2014-06-22 3 views
0

안녕하세요, 내 질문은 7보다 값을 입력 할 때 항상 예외를 throw합니다. 인덱스가 범위를 벗어났습니다 : 음수가 아닌 값이거나 컬렉션의 크기보다 작아야합니다. 매개 변수 이름 : 색인. 여기 내 코드는내 코드는 항상 예외 오류를 던졌습니다

List<int> sample = new List<int>(); 
DataTable dataHolder = new DataTable(); 
int counter; 
int secondCounter; 
public Form1() 
{ 
    InitializeComponent(); 
    Random rnd = new Random(); 
    for (int i = 0; i <= 100; i++) 
    { 
     sample.Add(rnd.Next(90, 100)); 
    } 
    dataHolder.Columns.Add("Random Number", typeof(string)); 
    dataHolder.Columns.Add("Average", typeof(string)); 
    counter = 0; 
    secondCounter = 0; 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    List<int> collectionHOlder = new List<int>(); 

    for (int a = 0; a < 96; a++) 
    { 
     //if (a != sample.Count) 
      for (int i = a; i <= Convert.ToInt32(textBox1.Text) - 1 + a; i++) 
      { 
       counter++; 
       secondCounter++; 
       if (i <= 96) 
       { 
        collectionHOlder.Add(sample[i]); 

       } 

       if (secondCounter < Convert.ToInt32(textBox1.Text)) 
       { 
        dataHolder.Rows.Add(sample[i].ToString(), ""); 

       } 
       if (counter == Convert.ToInt32(textBox1.Text)) 
       { 
        dataHolder.Rows.Add(sample[i].ToString(), collectionHOlder.Average()); 
       } 

      } 
     counter = 0; 
     collectionHOlder.Clear(); 
    } 
    dataGridView1.DataSource = dataHolder; 

고마워.

답변

4
for (int a = 0; a < 96; a++) 
{ 
    for (int i = a; i <= Convert.ToInt32(textBox1.Text) - 1 + a; i++) 

입력이 7 및 95에 도달이 7해진다 -

for (int i = 0; i <= 100; i++) 
    { 
    sample.Add(rnd.Next(90, 100)); 
    } 

101 개 요소의 배열, 올바른 위치 0..100 생성 한 이전 + 95 = 101

, . 내가> = 101


일반적인 조언으로, 작은 단계에서이 암호를 해독하고 의미있는 이름을 사용하는 경우

는 그래서 그래, sample[i]는 예외가 발생합니다. 디버깅, 오류 찾기 및 수정이 더 쉬워집니다.

+0

이다 완료 경우 (ⅰ <= sample.Count) { collectionHOlder.Add (샘플 [I]); } – Jhayphie

+0

이것이 후속 질문 인 경우 명확하지 않습니다. –

0

답장을 보내 주셔서 감사합니다. 이 코드는 항상 102 생성이 문제가 지금 내 용액

   **if(i < sample.Count - 1)** 
       if (counter == Convert.ToInt32(textBox1.Text)) 
        dataHolder.Rows.Add(sample[i].ToString(), collectionHOlder.Average()); 
관련 문제