2012-10-18 25 views
7

Tôi đang cố gắng tạo chuỗi con cho phép tôi có tối đa 6 chữ cái của họ, tuy nhiên những gì tôi có ở đây dường như có lỗi khi tìm thấy tên họ ít hơn 6 chữ cái, tôi đã tìm kiếm số giờ cho giải pháp không thành công:/Chuỗi con trong Java - dài tới một giá trị

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

Đó là .substring(0,6). Tôi cần nó để được lên đến 6 chữ không chính xác 6.

Lỗi:

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) 

Trả lời

30

Sử dụng

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

+1 câu trả lời thông minh ... –

+0

Cảm ơn bạn! Nó làm việc m bây giờ tôi cần phải hiểu nó! :) – user1756421

+0

'Math.min (6, secondName.length())' là '6' nếu' secondName.length()> 6', nó là 'secondName.length()' trong trường hợp còn lại. –

0

Mặc dù bạn không cung cấp các lỗi, nó là khá dễ dàng để phát hiện sự cố:

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); 

EDIT Điều này có thể dễ đọc hơn:

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

tôi thích

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

Bạn sẽ được nhận được một java.lang.StringIndexOutOfBoundsException.

Bạn cần đảm bảo độ dài luôn nhỏ hơn độ dài chuỗi. Một cái gì đó như

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

Đây có thể là một giải pháp: Kiểm tra chiều dài của họ và quyết định phù hợp

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); 
Các vấn đề liên quan