2012-08-07 6 views
1

안녕하세요 저는 학년 계산 작업 중입니다. 내 문제는 여기에 문자열 배열의 길이가 더 이상 int 배열 그것이 지난 2 학년을 건너 뛰는 경우입니다. 예 :배열을 전달하는 C#

int[] unit = new int[] {1,-3,3,4}; 
string[] letter_grade = new string[] {"A", "B","B","W","D","F"}; 

하지만 이상 문자열 배열보다 int 배열의 길이는하지 작업의 던지는 오류 인덱스 배열의 범위를 벗어난 경우.

int[] unit = new int[] {1,-3,3,4,5,6,7}; 
string[] letter_grade = new string[] {"A", "B","B"}; 

그래서 내 질문은 어떻게 둘 다 작동합니까 ??

int length = unit.Length; 
int no_units = length; 
double totalGrade_Points = 0.0; 
int totalno_units = 0; 
totalGPA = 0; 

for (int i = 0; i < unit.Length; i++) 
{ 
    entrygot = findGpaListentry(letter_grade[i]); //Index was outside the bounds of the array. 
    if (entrygot != null) 
    { 
    //some code calculation 
    } 
} 
+2

범위를 벗어난 색인에 액세스하려고합니다. 질문이 뭐야? ('i'는'[0, unit.length]'범위 내에 있습니다.) –

답변

0

. 두 개의 배열을 액세스하기 위해서는 두 배열이 동일하거나 특정 조건 하에서 비교되어야합니다. 이것 좀 봐 :

for(int i=0;i<unit.length;i++){ 
entrygot = findGpaListentry(letter_grade[i]);// only if letter_grade is valid under all values of i i.e unit.length 
} 



// either you have to check as if; 
    if(lenght_of_letter_grade < i-1) 
    //then access 
    entrygot = findGpaListentry(letter_grade[i]); 
0

배열 항목이 null 인 경우 배열의 범위를 벗어 것 때문에 그냥 확인 할 수없고 NULL 체크가 발생하기 전에 예외를 얻을 것이다. 당신이 시작하고 매우 잘 정의 된 조건을 중지해야합니다 색인 배열에 대한 I는 각 반복에 배열의 길이를 확인 할

...

for (int i = 0; i < unit.Length; i++) 
{ 
    if (currentArray.Length < i - 1) { break; } 
    // other code... 
} 
0

나는 당신의 경우 생각, 요소의 수는 결코 큰되지 않습니다 따라서 성능 문제가되지 않을 것입니다. 그래서 배열 대신 목록을 사용해야한다고 생각합니다. 배열을 사용하면 일부 논리가 변경되거나 다른 기능을 추가 할 때마다 삽입 검사를 수행해야합니다.

0

foreach 루프가 사용자의 환경에 가장 적합합니다.

foreach (string s in letter_grade) 
    { 
     entrygot = findGpaListentry(s); 
     if (entrygot != null) 
     { 
     //some code calculation 
     } 
} 
관련 문제