2011-04-25 4 views
0

다음 코드가 있습니다. 1과 2 자리 백분율을 모두 작동시키고 예외를 발생시키지 않으려면 어떻게해야합니까?foreach 루프를 사용하여 평균, 고득점, 저 점수 계산

private void calcStats() 
{ 
    string value; 
    int value2; 
    int total = 0; 
    decimal adverage; 
    decimal high; 
    decimal low; 

    lblHigh.Text = Convert.ToString(0); 

    foreach (string itemInList in lstBox.Items) 
    { 
     value = (itemInList.Substring(50, 3)); 
     value2 = int.Parse(value); 

     total += (value2); 
    } 

    adverage = total/(lstBox.Items.Count); 

    lblAdverage.Text = Convert.ToString(adverage); 
} 
+2

질문이 명확하지 않습니다. –

+0

기본적으로 정보를 목록 상자에서 꺼냅니다. 나는 백분율 (1-100에서 값)을 당기고있다 그리고 나는 약간 계산을하기 위하여 정수로 그 (것)들을 개조 할 필요가있다. – Brandon

+0

두 자리 백분율이 있으면 "15"가 표시되고 변환하려고하면 오류가 발생합니다. – Brandon

답변

1

이번에는 코드의 다른 부분에 문제가 있습니다. 귀하의 단일 및 두 자리 점수가 있기 때문에 예외를 throw하는 PadRight(3)없이

//Add the data elements to the row 
    row = name.ToString().PadRight(25); 
    row += ID.ToString().PadRight(25); 
    row += score.ToString().PadRight(3); 

:

//Add the data elements to the row 
    row = name.ToString().PadRight(25); 
    row += ID.ToString().PadRight(25); 
    row += score.ToString(); 

당신은 패드로도 점수가 필요합니다 : 당신의 btnAdd_Click 방법에서는이 같은 코드를 가지고 한 자리 숫자는 50 번째 자리에 있었고 한 자리 숫자 뒤에는 아무 것도 읽지 않았습니다. 패딩을하면 3 가지 가능한 점수 (싱글, 더블, 트리플 자리) 모두를 고려하게됩니다. 구문 분석 함수는 공백을 처리하고 1, 10 또는 100인지 여부를 알려줍니다.

+0

다른 오류가 발생합니다. 내가 만든 방법은 이미 예를 들어 "100"을 캡처 중입니다. 백분율이 59이면 "59"를 얻습니다. – Brandon

+0

당신에게 무엇을 말해야할지 모르겠습니다. 내 컴퓨터에서 실행중인 코드가 있고 점수가 8, 100 및 59 인 경우 평균 55.66이 올바르게 계산됩니다. 내가 무엇을 대신해서 할 수 있는지 잘 모르겠습니다. 디버거를 사용하여 코드를 단계별로 실행하고 문제가 정확히 어디에서 발생하는지 파악해야합니다. – Pete

+0

당신 말이 맞아요. 단순한 실수는 제 끝입니다. – Brandon

관련 문제