2013-02-23 39 views
1

運行我的代碼時出現此錯誤 2013-02-23 10:52:54.063計算器[31319:11303] *由於未捕獲異常而終止應用程序' 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值,然後我寫了一個小算法it.Below是這段代碼如何將字符串轉換爲ASCII碼當在目標c中將字符轉換爲ascii值時拋出錯誤

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

這段代碼wasnt在所有時間,但在某些特定情況下失敗只是如果我給在第一個文本框,ASD,並在第二個文本框,adsad它顯示這個錯誤。但對於像textbox1中的harsha和textbox2中的harsha這樣的文本,它並沒有引發任何錯誤。 – Kali 2013-02-23 05:29:48

+1

名爲「first」的字符串有多長?我猜它比「第二」字符串短。它看起來像遍歷「第二個」字符串的字符,然後從「第一個」訪問字符。 – 2013-02-23 05:30:17

+0

與第二個字符串相比,Aaron的第一個字符串字符更少。但它先訪問第一個字符串,然後是第二個字符串。你能幫我解決這個問題嗎 – Kali 2013-02-23 05:33:44

回答

0

您的第二個循環將字符拉出第一個字符串。這可能不是你想要的。由於您在第二個字符串中針對每個字符進行迭代,因此在第二個字符串比第一個字符串更長的情況下,您的代碼將發佈此錯誤。

嘗試改變線

unichar chi = [first characterAtIndex:j]; 

unichar chi = [second characterAtIndex:j]; 

而這個問題就會消失。

1

除非我讀你的代碼錯了,應該是這樣的:

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; 
    } 

你試圖從first字符可能超出字符串的結尾。