2014-03-12 8 views
0

안녕하세요, 사용자 입력을 받아 입력에 따라 일부 코드를 수행하는 응용 프로그램을 만들었습니다. 그것은 코드의 라인 때까지 ArrayIndexOutOfBoundsException 스위치 케이스 내에서 수행까지 모든 권리를 작동 : 길이 = 10; 색인 = 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

'입력'은 사용자가 편집 문구에 입력 한 내용에서 비롯된 것이므로이 예에서는 사용자가 1을 입력 할 수 있습니다. 이제 K0 등을 추가합니다. –

답변

4

숫자 값은 그 수 없다. 구체적으로, 숯은 '0''1'49하지 1, 등 '9' 통해 57하지 9 인 가치 48하지 0이다. Here's the ASCII table for reference.

당신은 당신의 char 값에서 48을 뺀 숫자로 p에서 char 값을 변환해야합니다. '0'48이라는 것을 기억할 필요가 없습니다. 단지 숫자 char 값이 순서에 해당합니다. 이는 단순히 '0'을 뺄 수 있음을 의미합니다.

다음은 변경해야 할 사항의 예입니다. 다른 경우에도 다른 유사한 변경을 할 수 있습니다.

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

감사합니다 !! 지금 무슨 일이 일어나고 있는지 완전히 이해합니다! 매우 도움이된다! –

관련 문제