2013-02-23 4 views
1

2013-02-23 10시 52 분 : 54.063 계산기 [31319 : 11303] * 캐치되지 않은 예외로 인해 응용 프로그램을 종료 할 때이 오류가 발생했습니다 문자를 ascii 값으로 변환 할 때 ' NSRangeException '이유 :'- [__ NSCFString characterAtIndex :] : 밖으로 범위 또는 인덱스 경계 ' * 먼저 던져 호출 스택 : (0x1c90012 0x10cde7e 0x1c8fdeb 0x1c56c0d 0x2d4b 0x10e1705 0x18920 0x188b8 0xd9671 0xd9bcf 0xd8d38 0x4833f 0x48552 0x263aa 0x17cf8 0x1bebdf9 0x1bebad0 0x1c05bf5 0x1c05962 0x1c36bb6 0x1c35f44 0x1c35e1b 0x1bea7e3 0x1bea668 ​​0x1565c 0x22c2 0x21f5 0x1) 내 응용 프로그램은 일반적으로 텍스트 상자에 입력 된 문자열을 받아 ascii 값으로 변환 한 다음 작은 알고리즘을 작성했습니다. 아래는 코드 조각 어떻게 아스키로 문자열을 변환 오전객관적인 C 던지는 오류

for (int i=0; i<[first length]; i++) { 

     unichar ch = [first characterAtIndex:i]; 
     firsttotal = firsttotal +ch; 

    } 
    for (int j=0; j<[second length]; j++) { 

     unichar chi = [first characterAtIndex:j]; 
     secondtotal = secondtotal +chi; 

    } 
+0

이 코드 조각은 항상 실패했지만 특정 텍스트 상자에서는 첫 번째 텍스트 상자를 asd로, 두 번째 텍스트 상자에서 adsad로 표시하면이 오류가 표시됩니다. 그러나 textbox1의 harsha와 textbox2의 harsha와 같은 일부 텍스트의 경우 오류가 발생하지 않았습니다. – Kali

+1

"first"라는 문자열의 길이는 얼마나됩니까? 나는 그것이 "두 번째"문자열보다 짧다고 추측합니다. "두 번째"문자열의 문자를 반복하고 "첫 번째"문자를 액세스하는 것처럼 보입니다. –

+0

Aaron 첫 번째 문자열 문자는 두 번째 문자열과 비교할 때 적습니다. 그러나 첫 번째 문자열을 먼저 액세스 한 다음 두 번째 문자열을 액세스했습니다. 이걸 좀 도와주세요. – Kali

답변

0

두 번째 루프가 첫 번째 문자열에서 문자를 가져 오는 중입니다. 이것은 아마도 당신이 의도 한 것이 아닙니다. 두 번째 문자열의 각 문자를 반복하기 때문에 두 번째 문자열이 첫 번째 문자열보다 길면 위에 올린 코드로이 오류가 발생합니다.

unichar chi = [second characterAtIndex:j]; 

에 선

unichar chi = [first characterAtIndex:j]; 

를 변경 시도하고이 문제가 사라집니다. 난 당신의 코드를 잘못 읽고 있어요 않는

1

,이이어야한다 : 당신은 문자열의 끝을 초과 할 수 first의 문자을 위해 노력하고

for (int i=0; i<[first length]; i++) { 
     unichar ch = [first characterAtIndex:i]; 
     firsttotal = firsttotal +ch; 
    } 
    for (int j=0; j<[second length]; j++) { 
     unichar chi = [second characterAtIndex:j]; // <-- THIS LINE 
     secondtotal = secondtotal +chi; 
    } 

.