2012-10-18 2 views
7

하위 문자를 사용하여 최대 6 자의 성을 가질 수 있도록 노력하고 있습니다. 그러나 여기에있는 문자는 하위 성을 찾을 때 오류가 발생하는 것으로 보입니다. 내가 더 성공과 솔루션을 시간 찾고있는 6 개 문자 :/Java에서 하위 문자열 - 길이 최대 값

id = firstName.substring (0,1).toLowerCase() + secondName.substring (0,6).toLowerCase(); 
System.out.print ("Here is your ID number: " + id); 

그것은 .substring(0,6)입니다. 오류를 제공하지 않았지만

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6 
    at java.lang.String.substring(Unknown Source) 
    at Test.main(Test.java:27) 

답변

30

사용

secondName.substring (0, Math.min(6, secondName.length())) 
+5

한 스마트 대답을 결정 ... –

+0

감사합니다! 그것은 지금 그것을 이해해야합니다 m 일했습니다! :) – user1756421

+0

'secondName.length()> 6이면'Math.min (6, secondName.length())'는'6'이고, 다른 경우에는'secondName.length()'입니다. –

0

, 꽤 쉬웠다 : 나는 최대-6 문자 정확히 6

오류가 될 필요 문제 발견하기 :

id = firstName.substring (0,1).toLowerCase() + secondName.substring (0,6<secondName.length()?6:secondName.length).toLowerCase(); 
System.out.print ("Here is your ID number: " + id); 

편집을이 더 많은 읽을 수 있습니다

id = firstName.substring (0,1).toLowerCase() + (6<secondName.length()?secondName.substring(0,6):secondName).toLowerCase(); 
System.out.print ("Here is your ID number: " + id); 
2

나는

secondName.length > 6 ? secondName.substring(0, 6) : secondName 
0

당신은 java.lang.StringIndexOutOfBoundsException을 받고있을 것이다 선호합니다.

길이가 항상 문자열 길이보다 작은 지 확인해야합니다.

int len = Math.min(6, secondName.length()); 
String id = firstName.substring (0,1).toLowerCase() + secondName.substring (0,len).toLowerCase(); 
1

이 같은 뭔가 해결책이 될 수 있습니다 : 성 (姓)의 체크 길이와 그에 따라

if (secondName.length() >6) 
id = firstName.substring (0,1).toLowerCase() + secondName.substring (0,6).toLowerCase(); 
else 
id = firstName.substring (0,1).toLowerCase() + secondName.substring (0,secondName.length()).toLowerCase(); 

System.out.print ("Here is your ID number: " + id); 
관련 문제