2012-09-19 4 views
2

'문자열 인덱스가 범위를 벗어났습니다.'예외 오류를 수정하는 데 도움을 찾고 있습니다. 내 코드는 두 개의 문자열을 사용자의 입력 (string1 및 string2)으로 가져 와서 원본의 일부인 새 문자열을 만드는 것으로되어 있습니다.문자열 인덱스 예외 범위를 벗어났습니다.

modString1 = string1.substring(string1.length() -3, string1.length()); 

modString2 = string2.substring(0,3); 

위의 코드는 문자열 1의 마지막 3 개 문자 1과 문자열의 처음 3 개 문자를 취할 예정이다 :

지금까지 나는 다음 있습니다. 내가 겪고있는 문제는 사용자가 3 자보다 짧은 문자열을 입력 할 때 발생합니다.

문자열이 너무 짧으면 입력을 확인하고 문자 (예 : x)를 추가하는 방법이 있는지 궁금합니다.

예를 들어 첫 번째 문자열에 'A'를 입력하면 문자열이 'xxA'로 변경되고 두 번째 문자열에 'A'가 입력되면 'Axx'로 변경됩니다.

답변

1

코드 앞에 if 문을 넣고 처리하기 전에 문자열 길이를 확인하십시오. 예를 들어

:

if(string1.length() < 3) { 
    // Add characters to the string 
} 
1

문자열이 너무 짧으면 문자 (예 : X)를 입력을 확인하고 추가 할 수있는 방법이 있는지 궁금 해요?

찾고있는 것은 패딩입니다.

여러 가지 방법으로 수행 할 수 있습니다. 가장 간단한 방법은 Apache의 StringUtils과 같은 외부 라이브러리를 사용하는 것입니다. StringBuilder을 사용하여 직접 패딩 메서드를 작성할 수도 있습니다.

관련 :

+0

이 내가 사용하는 예는 알려진 문자열의 예를 포함하는 것을 제외하고 생각했던 것 같습니다 및 String.format ("%의 10 초", "foo는")를 대체 ('', '*'). 나는 예제에서 "foo"를 대체 할 사용자로부터 입력을 받아들이는 경우이 접근 방법을 확신하지 못합니다. – User2

+0

"foo"를 사용자 입력으로 변경하십시오. –

+0

나는 그것을 어떻게하는지 잘 모르겠다. "foo"에 대한 입력 변수 (string1)의 이름을 바꾸면 String.format ("% 3s", string1) .replace ('', '*'); – User2

0

는 아래와 같이 검증을 넣어 문자열을 추가합니다. 예 :

if(string1.length()<3){  
     String op = 'xx'; 
     string1 += op; 
} 
관련 문제