2014-03-12 202 views
0

你好我建立了一個應用程序,將採取用戶輸入,然後執行一些代碼依賴於輸入。它一切正常,直到開關的情況下進行的代碼行,我得到ArrayIndexOutOfBoundsException:長度= 10; index = 53
它應該通過循環6次來建立一個字符數組,放入kc
任何人都可以幫忙嗎?
代碼:
爲什麼我會收到ArrayIndexOutOfBoundsException錯誤?

char[] k = input.toCharArray(); 


    char[] p = { '5', '6', '7', '8', '9', '1', '2', '3', '4', '5'}; 


    char[] kc = { '0', '0', '0', '0', '0', '0'}; 



    int i = 0; 
    for (i = 0; i<6; i++) { 


     switch (k[0]) { 

      case '0': 
       kc[i] = K0[p[i]]; k[0]++; 
       break; 

      case '1': 
       kc[i] = K1[p[i]]; k[0]++; 
      break; 

      case '2': 
       kc[i] = K2[p[i]]; k[0]++; 
      break; 

      case '3': 
       kc[i] = K3[p[i]]; k[0]++; 
      break; 

      case '4': 
       kc[i] = K4[p[i]]; k[0]++; 
      break; 

      case '5': 
       kc[i] = K5[p[i]]; k[0]++; 
      break; 

      case '6': 
       kc[i] = K6[p[i]]; k[0]++; 
      break; 

      case '7': 
       kc[i] = K7[p[i]]; k[0]++; 
      break; 

      case '8': 
       kc[i] = K8[p[i]]; k[0]++; 
      break; 

      case '9': 
       kc[i] = K9[p[i]]; k[0]++; 
      break; 



     }; 

     if (k[0] == 10) { 

      k[0] = 0; 
     }; 

    } 
+2

什麼是'K0'等?提供確切的線路和錯誤幾乎總是有用的。 –

+2

什麼是「輸入」?顯示堆棧跟蹤。 – Sionnach733

+0

'input'來自用戶放入edittext的內容,因此可以說這個例子中用戶輸入了1.我現在要添加K0等 –

回答

4

代表數字的字符的數字值不是該號碼。具體地,炭'0'是價值480'1'491,等等通過'9'579Here's the ASCII table for reference

您將需要通過從你的char48char值從p轉換爲數字。您不必記住'0'48,只是數值爲char。這意味着你可以簡單地減去'0'

下面是您需要更改的示例;您可以對其他情況進行其他類似的更改。

case '0': 
    kc[i] = K0[ p[i] - '0' ]; k[0]++; 
    break; 
+0

謝謝!讓現在發生的事情總體感覺到!非常非常有幫助! –

相關問題