2016-10-30 2 views
0

트윗에 해시 태그 또는 언급이 있는지 확인하고 다음에 공백이나 탭이 있으면 확인하지 않을 기본 코드를 작성하고 있습니다. 나는 또한 'unclosed character literal'메시지를 받고 있는데, 왜 그런지 잘 모르겠습니다.Error - StringIndexOutOfBoundsException : 문자열 인덱스가 범위를 벗어났습니다. 4

for (int i=0; i < tweet.length(); i++) { 

     char currentchar = tweet.charAt(i); 
     char nextcar = tweet.charAt(i+1); 

     if (currentchar == '#') { 

     if (! (nextcar == ' ') && ! (nextcar == '/t')) { 

     numofhashtags++; 

     } 
     } 
     if (currentchar == '@') { 

     if ((nextcar != ' ') && (nextcar != '/t')) { 

     numofmentions++; 
     } 

     } 
    } 
+6

'내가 Tom

+1

오류 메시지의 의미를 이해합니까? –

답변

0

먼저 코드를 게시 할 때 트윗의 문자열 값이 무엇인지 게시하십시오. 우리가 문자열 길이 당신은 3 위치 0 번째 위치에서 문자열을 세기 시작 3.

가정하자 지금은

for (int i=0; i < tweet.length(); i++) { 

     char currentchar = tweet.charAt(i); 
     char nextcar = tweet.charAt(i+1);//<-- here 

:

코드에서 문제

이있다. i+1을 수행하면 존재하지 않는 문자열의 4 번째 인덱스에 액세스하려고합니다. 이 양식에 for-loop

for (int i=1; i <tweet.length(); i++) {//change i=1 and condition to <= 

     char currentchar = tweet.charAt(i-1);//since we are already accessing from the next character you will you have scan the previous character for current character by doing i-1 
     char nextcar = tweet.charAt(i);// you will already have next character access so no need of i+1 
+0

첫 줄의 조건을'<'에서'<='로 바꾸는 이유는 무엇입니까? –

+0

@Tom 그럼이 코드가 실패한다고 말하는거야? –

+1

@ 톰 와우 맨! 내가 어떻게 이럴 수 있니 ... 고쳐 ...! 감사합니다 –

0

확인 :

또한 "/t"

을 당신이 당신의 루프를 변경하는 방법의

가능한 방법은 아니다 탭을 확인하기 위해 "\t"를 사용

for (int i=0; i < tweet.length()-1; i++) 
관련 문제